2013-11-15 117 views
0

如何从模块调用模块? 假设我有两个模块,mod_a和mod_b,在一个名为模块的目录中。从其他模块调用模块

我想要mod_a与require('./mod_b.js') mod_b,因为它们位于相同的目录中。

从父目录(使用主程序)调用mod_a的缺点是,它被require('modules/mod_a.js');调用,并且找不到内部的mod_b。使用require(__dirname+'./mod_b.js')在mod_a中也没有帮助。

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

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

回答

1

问题更可能与“主程序”要求mod_amod_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'); 
+0

你是对的!我误解了错误信息,我的结论更糟。阅读慢慢解决了错误。 – inselberg

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