15

Node Boilerplateを使用していますが、その上に (別のディレクトリに) 別のプロジェクトを作成することを決定するまで、すべて正常に機能しました。

現在、2 つの異なるフォルダーにまったく同じコード ベース (このプロジェクトはそのまま) があります。そのうちの 1 つを問題なく実行できますが、別の 1 つが失敗しています。

% 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は、問題が connect/express の互換性のないバージョンにあることを示しています。

しかし、これはどのように可能ですか?ソース コードは 2 つのフォルダーでまったく同じで、一方のコピーでは正常に動作し、別のコピーでは失敗しますか?

4

3 に答える 3

8

2つのフォルダーは共通の親を共有していますか?ノードは、アプリディレクトリの〜/.node_modulesおよび/node_modulesでモジュールを探します。

于 2011-03-14T04:14:08.283 に答える
7

OK、私自身の質問に答えさせてください:

誤った情報で申し訳ありません - これらの 2 つのフォルダはまったく同じではありませんでした (UNIX の diff をもっとよく学ぶ必要があります)。そして、そこにコードで require("connect")

/lib フォルダーへの接続のローカル チェックアウトが優先されますが、そこにない場合は、Ricardo が以前に設定したように ~/.node_modules から接続が読み込まれます。

于 2011-03-14T12:35:10.927 に答える
5

@see node.js Express モジュールが最後のコメントで正しくロードされていません。

その背後にある基本的な考え方は、システム レベルではなく、アプリケーション フォルダー内にモジュールをインストールすることです。

于 2011-05-21T12:52:56.547 に答える