2011-03-13 194 views
15

我使用的是Node Boilerplate,它一切正常,直到我決定在其上創建另一個項目(在另一個目錄中)。Node.js - 無法找到模塊

現在我在兩個不同的文件夾中具有完全相同的代碼庫(此項目爲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它說,問題是出在連接/快遞的不兼容版本。

但這怎麼可能?源代碼在兩個文件夾中完全相同,它在一個副本中工作正常,在另一個副本中失敗?

回答

7

OK,讓我來回答我的問題:

對不起,誤導 - 這兩個文件夾是不完全一樣的(我要去需要學習UNIX DIFF更好)。然後在代碼中需要(「連接」)

連接到/ lib文件夾的本地檢出優先,但如果它不存在 - 連接將按照Ricardo以前設置的從〜/ .node_modules加載。

8

這兩個文件夾共享一個共同的父母嗎?節點在應用程序目錄中的〜/ .node_modules和/ node_modules中查找模塊。

5

@see在最後的評論node.js express module not loading properly,也許它可以幫助

的基本思想背後卻是安裝模塊您的應用程序文件夾內,而不是在一個系統級

+0

這對我的作品,但我我很困惑,爲什麼使用'-g'安裝系統級別在正在運行的js文件中找不到模塊。 – Adam 2014-10-24 04:28:23