NPMはモジュールの依存関係をインストールしません


151

これは私package.jsonが親プロジェクトに含めているモジュール用です:

{
  "version": "0.0.1",
  "name": "module-name",
  "dependencies": {
    "express": "3.3.4",
    "grunt": "0.4.1",
    "grunt-contrib-compass": "0.4.0",
    "grunt-contrib-copy": "0.4.1",
    "grunt-contrib-cssmin": "0.4.1",
    "grunt-contrib-jshint": "0.6.3",
    "grunt-contrib-requirejs": "0.4.1",
    "grunt-contrib-uglify": "0.2.2",
    "grunt-contrib-watch": "0.5.1",
    "grunt-express-server": "0.4.1",
    "grunt-karma": "0.4.5",
    "grunt-regex-replace": "0.2.5",
    "request": "2.25.0"
  },
  "scripts": {
    "postinstall": "grunt install"
  }
}

注意すべきことの1つは、このモジュールがプライベートリポジトリに含まれていて、次のpackage.jsonように親に含めていることです。"module-name": "git+ssh://git@myserver:user/module-name.git"


package.jsonは、それを含めるために使用する行と同様、問題ありません。エラーメッセージが表示されますか?あなたの道にgitはありますか?
poida 2013

1
postinstallgrunt
SA

1
この問題は2016年11月にもまだ存在します。新しいコンピューターで、動作するモジュールのクリーンインストールを実行しました。@モーセンの答えはそれを修正しました。
Joe Lapp、2016

回答:


152

かなり前から存在し、まだ解決策のないバグを見つけたようです。npmリポジトリには、このケースに関するいくつかの未解決の問題があります。

最初の人では、あなたが試すかもしれないいくつかの回避策を挙げています。

別の解決策は、依存関係を第1レベルの依存関係として明示的にリストすることです(少しハック)。これはあなたがリストを維持することを必要としますが、実際にはそれは非常にまれに行われなければなりません。


1
@ Flame2057あまり有益な情報ではありませんが、運が悪かったことを知るのは良いことです。先に進んで質問を作成してください。コミュニティが解決する知識を持っているといいのですが。楽しんで!
allprog 2017

もう1つの手順が必要でした。ここで説明されている他の手順(node_modulesとpackage.lock.jsonを削除してからnpm install)を実行した後、プロジェクトの[依存関係]を右クリックして[パッケージの復元]を選択する必要がありました。
18年

113

非常によく似た問題があり、node_modulesフォルダ全体を削除して再インストールするとうまくいきました。ITクラウドショーからこのトリックを学びました!

rm -rf node_modules
npm install

これは実際に私のために働いた。私はそれが本当に奇妙だと思います-そのグリッチの原因は何ですか?とにかく、フォルダを削除してnpm installを再実行すると、動作します。事前に、そのサブディレクトリには何もインストールされません。これで、すべてがそこにインストールされます。
CtheGood

ありがとう@Moshen。古いバージョンのノードを削除して、クリーンインストールを行いました。私はすべてのnode_modules /をグローバルに削除しましたが、一部の既存のアプリから削除するのを忘れていました。既存の各アプリのディレクトリにあるnode_modulesフォルダーを削除してから、を実行する必要がありましたnpm install
wilblack 2016年

古き良き「最初からアプローチし直してみましたか?」これは私にとってはうまくいきました。
MarcoAurélioDeleu 2016

回避策があることを知っておくのは良いことですが、これは本当に「マシンを再起動して再試行」することであり、本当の問題を隠すだけです。NPMのインストール(メッセージなしでプロセスが即座に終了する)でも同様の問題があり、回避策の1つはnode_modulesフォルダーを削除して再インストールすることです。ここで何が行われているのかを理解しているという自信はありません。
ケリーS.フランス語

1
これでうまくいきました。IT Crowdの参照用にもう一度+1できると思います。
2018年

32

Windowsマシンを使用しています。

  1. node_modulesフォルダーを削除しました。
  2. どういうわけか、package.lock.jsonファイルが作成されています。そのファイルを削除しました。
  3. 次に、npmをインストールします。
  4. クリーンビルド。
  5. 走れ。

14
この答えはもっと愛を得る必要があります。package.lock.jsonファイルは私を台無しにしていました。
mwilcox 2017

16

このコードを継承した場合、依存関係とバージョンがロックされていて、。/ npm-shrinkwrap.jsonファイルがある可能性があります。

依存関係がそのファイルにリストされていない場合、npm installコマンドでインストールされることはありません。

手動でパッケージをインストールしてから実行npm shrinkwrapし、シュリンクラップファイルを更新する必要があります。


2
package-lock.jsonノード8.0.0およびnpm 5.0.0に更新した後、パッケージを手動でインストールするとファイルが作成されるという問題がありました。その後、実行npm installすると、依存関係をすべてオフにするのではなく、その1つのパッケージのみがインストールされます。削除package-lock.jsonして再実行npm installすると、問題が解決しました。
モンクピット2017年

1
@Monkpitそれは私にも解決しました、ありがとう!package-lock.json邪魔になっていた。
VirtualWolf 2017年

10

package.jsonファイルがと同じディレクトリにないという問題に直面していると思いますGruntfile.jsgrunt xxxコマンドを実行すると、次のようなエラーメッセージが表示されます。

Local Npm module "xxx" not found. Is it installed?

現時点では、解決策は次のとおりです。

  • Gruntfile.jsと同じディレクトリにpackage.jsonを作成します。
  • グラントプロジェクトに必要なモジュールを定義する
  • 実行npm installしてローカルにロードします
  • これで、必要なgruntコマンドが機能するはずです。

私見、親npmモジュール(つまり、同じプロジェクト内の親ディレクトリにあるpackage.json)から読み込まれた不快な解決モジュールを使用できないのは悲しいことです。議論はここでは、それは避けるのロード「グローバル」モジュールに行われたことを示していると思われるが、私は何を私たちが望むことはロードではなく、「自分のプロジェクト」のモジュールからだと思います。


したがって、これは私の親プロジェクト(サブモジュールプロジェクトをインポートするプロジェクト)の構造です:cl.ly/image/020E0b3I0t1Aおよび私のサブモジュールプロジェクトの構造:cl.ly/image/2q0L3l1v0s40 ; Gruntfile.js両方がpackage.json同じレベルで含まれていることを確認できます。
アーメドヌアマン2013

1
これはの問題ではなく、サブモジュールプロジェクトに依存関係を再帰的にインストールgruntnpmないことの問題です。
Ahmed Nuaman 2013

9

古いバージョンのノードでは、OPが当てはまる場合があります。ただし、ノード4.4.1でも同様に直面しました。

使用しているノードのバージョンにリンクされている可能性があります。最新バージョンにアップグレードしてみてください。特定の依存関係は、ノードバージョンと互換性がない場合、一時的に読み込まれません。

を実行してこれを見つけましたnpm update

最新バージョン(4.4-> 5.9)にアップグレードした後。これは修正されました。



8

また、パッケージ名が正しく受け入れられていることも確認してください。

違う:

{
    "name":"My Awesome Package"
}


正しい

{
    "name": "my-awesome-package-name"
}

1
ええ、名前にスペースがあり、正しくインストールされませんでした。
Ansjovis86

1
スペースだけでなく、彼が名前に使用した「-」についても同じです。私は同じ問題に直面しました。名前に-または_を入れれば、機能します。
モラグバル

4

grunt-cliをインストールする必要があるかもしれません。npmをインストールする前にこれを試してください:

sudo npm install -g grunt-cli

これにより、うなり声が終了しない問題が修正されます。有効なうなり声ファイルも必要です。

出典:https//stackoverflow.com/a/16456467/241294


コマンドプロンプトで「grunt」コマンドを実行するとどうなりますか?あなたのパスに存在しますか?そうです、ペーストビンからインストールされたように見えます。sudoと-gでインストールしましたか?
poida 2013

それは~ ᐅ which grunt /opt/local/bin/grunt
うなり声の

また、NPMを介してではなくリポジトリを複製して実行するnpm installgrunt install、正常に動作します。問題は、NPMがpackage.json
Ahmed Nuaman

どのディレクトリでパッケージの依存関係を探していますか?それらは最上位ではなく、最上位のパッケージ/ node_modules / module-name / node_modulesの下にある必要があります。間違ったディレクトリで動作しているため、gruntがgruntファイルを見つけていない可能性がありますか?
poida 2013

これはの問題ではありませんgrunt。NPMでモジュールをインストールすると、通常、すでにインストールされているモジュールの依存関係の最後に要約が表示されます。問題のモジュールをインストールすると、インストールされている依存関係モジュールの概要が表示されません。
Ahmed Nuaman 2013

4

誰かがこの窮地に苦しんでいて、たまたま私がしたのと同じアサニンの過ちを犯した場合に備えて、これが私の場合のものでした。1時間頭を壁にぶつけた後、jsonが正しくネストされておらず、キー「依存関係」がキー「リポジトリ」内にあることに気付きました。
言うまでもなく、明らかなエラーはなく、モジュールもインストールされていません。


3

これを回避する別の方法は、これをモジュールpackage.jsonスクリプトセクションに追加することです

"preinstall": "npm install {Packages You depend on}"

これが行うことは、モジュールに必要なすべてのパッケージをインストールし、そのエラーが発生しないことです。


3

古いノードバージョンで発生します。次のような最新バージョンのノードを使用します。

$ nvm use 8.0
$ rm -rf node_modules
$ npm install
$ npm i somemodule

編集:また、あなたも確認してくださいsave
例えば:npm install yourmoduleName --save


2

Windowsにクリーンなノード開発環境をインストールすると、このエラーが発生しました。

これを修正するために、新しいプロジェクトディレクトリ(で足場を組んだだけyo angular)に移動し、次の2つのコマンドを入力しました。

npm install -g grunt --save-dev

それはあなたのプロジェクトにローカルgrunt依存関係をインストールします。次:

npm install

これにより、すべての(新しい)プロジェクトの依存関係がインストールされます。

多田!


2

あなたの依存関係があなたの側にあることを確認するために言及する価値がdependenciesありますpackage.json(とは対照的にdevDependencies)。

私の問題は基本的にOPと同じでした:

  • プライベートレポ(それを呼び出すrepo1)を"module-name": "git+ssh://git@myserver:user/my-repo-name.git"他のレポ(それを呼び出す)を介してインストールしrepo2
  • からの一つのパッケージの依存関係がありませんでした。repo2node_modulesrepo1
  • 私のばかげた間違い!.. repo1devDependencies代わりにその依存関係をリストしていたdependencies
  • 私の中で依存関係を動かしrepo1さんpackage.jsonからdevDependenciesdependencies
  • 私の中でrepo2、私は削除しました、node_modulesそしてpackage-lock.jsonnpm install実際に、依存関係がありました!

私はDockerfileのnpm installコマンドの上にNODE_ENV = production環境変数を宣言していたため、devDependenciesがインストールされません
Pieter De Clercq

0

同じ問題がありました。しかし、同じマシン上で、1つのプロジェクトに適切なpackage.jsonがあり、すべての依存関係が正常にインストールされています。そして、別のプロジェクトでは、私が何をしても、package.json依存関係がインストールされませんでした。package.jsonをコピーして、別のプロジェクトに貼り付けました。そしてそれはうまくいった!私が見つけた違いは、ファイルの先頭の空行だけでした。わからない、または何かに影響する、おそらく他の問題。しかし、問題はpackage.jsonファイルだけでした。


0

私もこの問題に直面していると思います。私が見つけた最良の解決策は、コンソールを見て、スローされているエラーを理解することでした。それで、私はそれを注意深く読んだところ、問題は、リポジトリでリポジトリ、説明、および有効な名前を指定していないことであることがわかりましたpackage.json。私はそれらの情報を追加し、すべてが大丈夫でした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.