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.js
parsing为./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文件夹的结构,你需要导航到你的模块,
"../"
从一个子目录导航到父目录和
"./"
从父目录导航到子目录您需要尊重相对的方式。