如何从模块调用模块? 假设我在名为modules的目录中有两个模块mod_a和mod_b。
我想要mod_a中的mod_b和require('./mod_b.js')
,因为它们位于同一目录中。
从父目录(使用主程序)调用mod_a的缺点是,require('modules/mod_a.js');
调用它并且找不到内部mod_b。
在mod_a中使用require(__dirname+'./mod_b.js')
也没有帮助。
我知道这是一个非常基本的问题,但我找不到解决方案。
修正:现在一切都很好,这是打字错误。
答案 0 :(得分:1)
__dirname
将返回类似/home/user/modules
的内容,并将其与./mod_b.js
连接并获取/home/user/modules./mod_b.js
,但您希望/home/user/modules/mod_b.js
解决方案:
.
/
答案 1 :(得分:1)
问题更可能是“主程序”需要mod_a
,而mod_a
需要mod_b
。
相对require()
路径为expected to always start with a ./
(或../
):
如果没有前导
'/'
或'./'
来指示文件,该模块可以是“核心模块”,也可以从node_modules
文件夹加载。
因此,“主程序”应改为使用:
require('./modules/mod_a.js');
然后,mod_a
应该可以在不使用问题的情况下mod_b
使用:
require('./mod_b.js');