'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() {}; });