【发布时间】:2018-11-23 17:26:27
【问题描述】:
我创建了两个 modules.export 函数,在某些情况下它们需要彼此。
例如:
// a.js
modules.exports = function(){ b(); }
// b.js
modules.exports = function(){ console.log('b'); }
// main.js
let a = require('a.js');
let b = require('b.js');
a();
如上,它会抛出一个错误,说 'b()' 不存在。在常规 JS 中,您可以定义调用其他函数的函数,只要定义在相同或更高的范围内,所以我不确定为什么 modules.exports 不会发生这种行为。
我真的不想在 a.js 中要求 b(),因为这会在我的项目中产生大量开销。
编辑
不幸的是,将模块添加到全局范围不是一种选择。
【问题讨论】:
-
你可以使用
global,但还是建议手动要求它。开销是使文件对其他文件的依赖显式的权衡。在“常规 JS”(我猜你的意思是浏览器 JS)中,依赖全局变量会导致模棱两可的问题(例如,这个函数到底是从哪里来的?)并且可能会出现名称冲突。 -
您在
a.js中缺少const b = require('./b.js')
标签: node.js require node-modules