web-dev-qa-db-ja.com

Node.js-モジュールが見つかりません

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

今、私は2つの異なるフォルダにまったく同じコードベース(このプロジェクトは現状のまま)を持っています。私は問題なくそれを実行できますが、別のものは失敗しています:

% 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つのフォルダーでまったく同じであり、1つのコピーで正常に動作し、別のコピーで失敗しますか?

15
user80805

OK、私自身の質問に答えましょう。

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

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

7
user80805

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

8
Ricardo Tomasi

@see node.jsエクスプレスモジュールが正しく読み込まれていません 最後のコメントで、おそらくそれが役立ちます

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

5
Georgiana