这是我能找到的解释。
require.main
获取此node.js进程中首先运行的脚本的模块对象。
require.main.require
获取一个函数,该函数可用于加载脚本,就像在主脚本中一样。
需要.main.require
没有
.resolve()
方法。同时
需要.main.require
确实为您提供了一个require函数,因为您发现它与您在模块本身中获得的对象不完全相同。它只是一个函数,似乎没有require对象在您自己的模块中具有的任何属性。
您自己模块中的require对象由一个名为
makeRequireFunction()
在装载机中(参见
source code here
)这就是其他属性添加到它的地方。但是,
需要.main.require
与
process.mainModule
仅仅是需求函数本身,而不是那个特殊的对象。
解决办法是出口
resolve()
然后从输入脚本访问从另一个脚本导出的函数。
在您的主模块中,您可以将此:
module.exports.resolve = require.resolve;
然后,您可以在其他地方访问它:
require.main.exports.resolve(...);