1. ホーム
  2. node.js

[解決済み] Node.jsで "Cannot find module "エラーを解決するにはどうしたらいいですか?

2022-03-24 12:21:05

質問

GitHubからモジュールをダウンロードし、指示に従ってビルドした後、それを既存のプロジェクトに取り込もうとしています。

> npm install ../faye

これでうまくいくように見える。

> npm list
/home/dave/src/server
└─┬ [email protected]
  ├── [email protected]
  ├── [email protected]
  └── [email protected]

しかし、Node.jsはモジュールを見つけることができません。

> node app.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'faye'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

私はここで何が起こっているのか本当に理解したいのですが、次にどこを見ればいいのか少し途方に暮れています。何か提案はありますか?

解決方法は?

使用方法 npm install は、カレントディレクトリのみ (サブディレクトリは node_modules ). app.jsは、以下の場所にありますか? home/dave/src/server/ ? もしそうでなく、任意のディレクトリからモジュールを使用したい場合は、グローバルにインストールする必要があります。 npm install -g .

私は通常、ほとんどのパッケージをローカルにインストールし、プロジェクトのコードと一緒にチェックインできるようにしています。

更新(2019/8)しました。

現在では パッケージロック.json このファイルは、npm が node_modules ディレクトリを変更したときに自動的に生成されます。そのため、パッケージのチェックを省くことができます。 package-lock.json は、現在使用している node_module の正確なバージョンを追跡します。パッケージをインストールするには package-lock.json の代わりに package.json コマンドを使用します。 npm ci .

アップデート(2016/3)しました。

私の対応、特に自分のコードが依存しているパッケージのチェックインについては、多くの非難を受けました。 数日前、誰かが自分のパッケージのすべてをアンパブリッシュしました ( https://kodfabrik.com/journal/i-ve-just-liberated-my-modules ReactやBabel、その他もろもろが壊れました。 もしあなたがプロダクションコードを持っているなら、NPMがあなたのために依存関係を実際に維持することに頼ることはできないということが、今明らかになることを願っています。