'module.exports'是否必须在语法上位于包含导出的文件中?

时间:2015-06-10 21:26:56

标签: javascript node.js

module.exports是否必须在语法上位于包含导出的文件中?

例如,如果我定义了一个尝试从内部执行myDefine赋值的全局函数属性module.exports,那么这是否可行。

如果没有,为什么不呢?

file1.js

GLOBAL.myDefine = function(fn) {
  module.exports = fn;
};

file2.js

require('./file1');
myDefine(function() {
  return function MyExport() {};
});

1 个答案:

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