Node.js – “无法find模块”,当模块调用其他模块

我正在开发我的第一个Node.js应用程序。 一切都find了,但现在的应用程序正在变大。 我想分成不同的文件的应用程序。 所以,我使用“require”方法将应用程序划分为文件。

但我的应用程序显示“无法find模块”。

** 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"; }; 

帮助我或build议。 谢谢。 我想在另一个模块中调用模块。 但是我的节点应用程序不能用于“无法find模块”。 如何解决?

看来你错写了var m=require('./controller/a.js'); 而不是var m=require('./controller/b.js');

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

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

所以你运行需要./controller/b.js ,它工作正常。 但是,当./controller/b.js需要./model/c.js ,Node将c.jsparsing为./controller/model.js ,因为每个模块都与调用require()的文件相关 。

这就是错误发生的原因。

要解决这个问题,你应该更换

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

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

require函数只需用jsinput模块的名称就可以自动在node_modules文件夹中search模块。 延期

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

但是如果你改变你的node_modules文件夹的结构,你需要导航到你的模块,

 "../" 

从一个子目录导航到父目录和

  "./" 

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