app.js
require('./modules/mod');
modules / mod / mod.js
modules.exports = () => {
require('./modules/secondmodule');
}
本质上,我希望上面的代码能够需要模块,但要使用从其本身调用的相同上下文,例如,同一文件夹中的另一个模块,而不必使用相对路径。
我以为module.require()做到了这一点,但似乎给了我与我将代码移到单独的模块(mod.js)中后require()相同的错误。
编辑:
从那以后,我发现我可以使用require.parent.module
它,并且它似乎正在工作。如果不建议这样做,请告诉我。
require
使用相对于当前模块的路径。可以通过提供require
父模块来实现:
modules.exports = parentRequire => {
parentRequire('./modules/secondmodule');
}
用法如下:
require('./modules/mod')(require);
使用相对模块是正确的,因为子模块不应该知道对其进行评估的上下文:
require('../secondmodule');
万一mod
必须从中解耦secondmodule
,则可以使用某些常见模式(例如,依赖项注入或服务定位器)为其提供依赖项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句