Node.js - “无法找到模块”,当模块调用其他模块时

时间:2014-06-13 02:59:03

标签: node.js

我正在开发我的第一个Node.js应用程序。一切都找到了,但现在应用程序越来越大了。我想将应用分成不同的文件。所以,我使用了"要求"将应用程序划分为文件的方法。

但我的应用程序显示"找不到模块"。

** Call Ordering **
A.js is call B.js <-- call is ok
B.js is call C.js <-- Cannot Find module, B.js can't call 'test222 function'

我的示例代码。

a.js

...    
var m=require('./controller/b.js');
m.register(req,res);

b.js

exports.register=function(){
var MyModule=require('./model/c.js');
console.log(MyModule.test222());  <--------- cannot find module
};

c.js

exports.test222=function() {
    return "c.js";

};

帮帮我或建议。谢谢。 我想在另一个模块中调用模块。但我的节点应用程序不能用于&#34;找不到模块&#34;。怎么解决?

2 个答案:

答案 0 :(得分:1)

您似乎错误地写了var m=require('./controller/a.js');而不是var m=require('./controller/b.js');

如果是这样,我可以看到你有以下文件结构:

./a.js
./controller/b.js
./model/c.js

所以你运行需要./a.js的{​​{1}},它运行正常。但是当./controller/b.js需要./controller/b.js时,Node会将./model/c.js解析为c.js,因为each module is relative to the file calling require()

这就是发生错误的原因。

要解决此问题,您应该替换

./controller/model.js

var MyModule=require('./model/c.js');

答案 1 :(得分:0)

require函数自动搜索node_modules文件夹中的模块 只需用js键入模块的名称即可。扩展

var b=require('b.js');
var c=require('c.js');

但是如果您对node_modules文件夹的结构进行了更改,则需要通过编辑来使用相对的waie导航到您的模块

"../" 

从子目录导航到父目录和

 "./" 

从父目录导航到子目录 你需要尊重相对的方式。