app.js
require('./modules/mod');
模块/ MOD / mod.js
modules.exports = () => {
require('./modules/secondmodule');
}
基本上我希望上面的代码能够需要模块,但是使用与调用它本身相同的上下文,例如同一文件夹中的另一个模块,无需使用相对路径。
我认为module.require()做到了这一点,但它似乎给了我同样的错误,需要()是我将我的代码移动到单独的模块(mod.js)后。
编辑:
我发现我可以使用require.parent.module
它似乎工作。如果不建议,请告诉我。
require
使用与当前模块相关的路径。可以通过从父模块提供require
来实现:
modules.exports = parentRequire => {
parentRequire('./modules/secondmodule');
}
使用如下:
require('./modules/mod')(require);
使用相对模块是正确的,因为子模块不应该知道它被评估的上下文:
require('../secondmodule');
如果mod
必须与secondmodule
分离,可以用一些共同模式向它提供依赖性,例如,依赖注入或服务定位器。
次要可选答案:
module.exports = () => {
module.parent.require('./modules/secondmodule');
}