'module.exports'是否必须在包含导出文件的语法位置上?
module.exports
是否必须在包含导出的文件中的语法位置?
例如,如果我定义一个全局函数属性myDefine
,它试图从内部执行module.exports
分配,这是否可行。
如果没有,为什么不呢?
file1.js
GLOBAL.myDefine = function(fn) { module.exports = fn; };
file2.js
require('./file1'); myDefine(function() { return function MyExport() {}; });
当Node需要文件时,它将内容包装在一个外部函数中:
function(exports, require, module, __filename, __dirname){ }
当file1.js被解释时, module.exports = fn
将引用它自己的本地module
实例,因此它不会对file2.js产生影响。 为了得到这个工作,你需要以某种方式将file2.js module
实例传递给file1的myDefine()
例如
file1.js
GLOBAL.myDefine = function(module, fn) { module.exports = fn; }
file2.js
require('./file1'); myDefine(module, function() { return function MyExport() {}; });