从其他模块调用模块

时间:2013-11-15 12:34:18

标签: node.js

如何从模块调用模块? 假设我在名为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')也没有帮助。

我知道这是一个非常基本的问题,但我找不到解决方案。

修正:现在一切都很好,这是打字错误。

2 个答案:

答案 0 :(得分:1)

__dirname将返回类似/home/user/modules的内容,并将其与./mod_b.js连接并获取/home/user/modules./mod_b.js,但您希望/home/user/modules/mod_b.js

解决方案:

  1. 删除开头.
  2. 或在开头添加/
  3. 或使用path.join

答案 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');