Node.js – 找不到模块

我正在使用Node Boilerplate ,它一切正常,直到我决定创build另一个项目(在另一个目录中)。

现在我有两个不同的文件夹完全相同的代码库(这个项目是IS)。 我可以运行一个没有任何问题,但另一个失败:

% node app.js node.js:116 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: Cannot find module 'connect/middleware/router' at Function._resolveFilename (module.js:299:11) at Function._load (module.js:245:25) at require (module.js:327:19) at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/server.js:17:14) at Module._compile (module.js:383:26) at Object..js (module.js:389:10) at Module.load (module.js:315:31) at Function._load (module.js:276:12) at require (module.js:327:19) at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/index.js:28:31) 

有类似的问题在这里解释 – https://github.com/visionmedia/express/issues/535其中说问题是在连接/快递的不兼容版本。

但是这怎么可能呢? 源代码是完全相同的两个文件夹,它在一个副本中工作正常,并在另一个失败?

这两个文件夹共享一个共同的父母吗? 节点在您的应用程序目录中查找〜/ .node_modules和/ node_modules中的模块。

好的,让我回答我自己的问题:

对不起,错误信息 – 这两个文件夹不完全相同(我将需要学习unix差异更好)。 在那里它需要(“连接”)的代码

连接到/ lib文件夹的本地检出优先,但如果不存在 – 连接将按照Ricardo以前设置的〜/ .node_modules加载。

@see node.jsexpression模块在最后的评论中没有正确加载 ,也许有帮助

其背后的基本思想是将模块安装在应用程序文件夹中,而不是在系统级别上