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