npm windowsをグローバルにインストールすると、npm ERRが発生します。無関係な


121

私はうなり声とnpmに新しいです。だから私はサイト「http://tech.pro/tutorial/1190/package-managers-an-introductory-guide-for-the-uninitiated-front-end-developer#front_end_developers」でいくつかの「料理本の例」を試しています。あなたは今そこを見る必要はないはずですが、サイトを共有することは良いことだと思いました。これまでのところ、グローバルインストールになるまでは良好です。(わかりました、私は理解しなければならなかったいくつかのエラーですが、今私はnpmで働いています)。

何かをグローバルにインストールしようとすると、行き詰まってしまいます。

一部のパッケージをグローバルにインストールするためにこれまでにテストしたこと:

  1. 作成されたテストディレクトリ grunttest

  2. そのディレクトリ内:

    npm install -g jshint

私が見ることができる出力:

 npm http GET https://registry.npmjs.org/jshint
 npm http 304 https://registry.npmjs.org/jshint
 ...
 npm http 304 https://registry.npmjs.org/string_decoder
 C:\Program Files\nodejs\node_modules\npm\jshint -> C:\Program Files\nodejs\node_modules\npm\node_modules\jshinnt
 jshint@2.4.4 C:\Program Files\nodejs\node_modules\npm\node_modules\jshint
 ├── console-browserify@0.1.6
 ├── exit@0.1.2
 ├── underscore@1.4.4
 ├── shelljs@0.1.4
 ├── minimatch@0.2.14 (sigmund@1.0.0, lru-cache@2.5.0)
 ├── cli@0.4.5 (glob@3.2.9)
 └── htmlparser2@3.3.0 (domelementtype@1.1.1, domutils@1.1.6, domhandler@2.1.0, readable-stream@1.0.26-2)

最後のインストール以降(数分前)にリソースが変更されなかったというだけの理由で、大丈夫であるはずの304に気づきました。

jshintが存在するかどうかの確認:

`npm -global list`

出力:

npm@1.4.3 C:\Program Files\nodejs\node_modules\npm
├── abbrev@1.0.4
├── ansi@0.2.1
├─...
├──
├── graceful-fs@2.0.2
├── inherits@2.0.1
├── ini@1.1.0
├─┬ init-package-json@0.0.14
│ └── promzard@0.2.1
├─┬ jshint@2.4.4 extraneous
│ ├─┬ cli@0.4.5
│ │ └─┬ glob@3.2.9
│ │   └── inherits@2.0.1
│ ├── console-browserify@0.1.6
│ ├── exit@0.1.2
│ ├─┬ htmlparser2@3.3.0
│ │ ├── domelementtype@1.1.1
│ │ ├── domhandler@2.1.0
│ │ ├── domutils@1.1.6
│ │ └─┬ readable-stream@1.0.26-2
│ │   └─... ├── text-table@0.2.0
├── uid-number@0.0.3
└── which@1.0.5

**npm ERR! extraneous: jshint@2.4.4 C:\Program Files\nodejs\node_modules\npm\node_modules\jshint npm**

質問:

  1. なぜnpm ERRが出るのですか?無関係な…?
  2. どういう意味ですか?
  3. この問題を解決するにはどうすればよいですか?

情報:

私はcygwinをシェルとして使用して、WindowsマシンWindows 7を使用しています。jshint someTestfile.jsもちろん、jshint()だけを試行しても機能しません。

よろしくお願いします

回答:


208

npm ERR! extraneousパッケージがインストールされているが、プロジェクトのにリストされていないことを意味しますpackage.json

グローバルにインストールされたパッケージを一覧表示するので、グローバルにインストールされたほとんどのものがプロジェクトのにはないため、単純に無視できる多くの無関係なエラーが発生しますpackage.json


1
こんにちは!答えてくれてありがとう。これは、私が実際に "jshint"を実行できるはずであることを意味しますか?
Meru、2014年

正しい。実行jshint myfile.jsすると、jshintが実行されmyfile.jsます。
カイル・ロビンソン・ヤング

1
ああ、なるほど。Gruntでは、すべてがタスクを通過します。でgrunt-contrib-jshintタスクをロードして設定しますGruntfile.js。グローバルにインストールする唯一のものはnpm i grunt-cli -g、を実行するgruntコマンドを実行するためのアクセス権を与えることですGruntfile.js。詳細については、このガイドを参照してください:gruntjs.com/getting-started
カイルロビンソンヤング

8
(グローバルではなく)ローカルに保存された無関係なライブラリがある場合は、実行npm pruneしてそれらを取り除くことができます。
krx

2
@KyleRobinsonYoung:回答でこれについて言及するのはどうですか。未使用のパッケージはすべて使用して削除できますnpm prune --your-env
geek_guy 2015年

21

1&2:プロジェクトのpackage.jsonファイルにjshintがリストされていないが、グローバルにインストールされていることを意味します。したがって、それは大きな問題ではありません。

3:この無関係なエラーを回避するには、オプションを指定してインストールを実行または再実行します--save。これにより、package.jsonファイルが自動的に更新されます。

npm install -g jshint --save

または、package.jsonファイルを手動で更新する必要があります "dependencies": {...}


maの場合、ローカルでのみ機能し、グローバルな重複はありません
BG BRUNO

2
--saveと一緒に機能しません-g。グローバルパッケージリストにはpackage.jsonがありません。
Guido Bouman

5

これを解決するにnpm updateは、親パッケージのフォルダーでを実行し、リストから無関係なパッケージの一部を削除してからnpm uninstall <package>、残りの数個を削除しました。

これを実行した後、エラーが発生しないので、うまくいったようです。


3

すべての答えを組み合わせて解決しました。まず、パッケージをグローバルにインストールしました。

npm install -g packagename --save

npmはこのパッケージもグローバルにインストールしましたが、ローカルのpackage.jsonファイルに追加しなかったので、私はそれに対して何かをしなければなりませんでした。

私は、ローカルのソリューションを削除してからグローバルにインストールするソリューションを選択しました。

npm uninstall packagename
npm install -g packagename

このようにして、警告はなくなり、package.jsonファイルを台無しにしないでください。


プラス100。ローカルでアンインストールし、グローバルでインストールする必要がありました。
Collin Peters

1

私の場合、この 'npm ERR!'npm ls'を実行すると、cygwinターミナルに無関係なメッセージが表示されます。これは、いじくり回した後のグローバルに破損したセットアップのようなものだと思いました。私はここで以下の観察を学びます:

  • 'npm ls'は、現在のフォルダーの場所に応じて異なる出力を提供します。
  • 'npm ls'は、現在のフォルダーの場所にある 'node_modules'フォルダーの存在を検出し、それらのコンテンツを一覧表示しようとします。グローバルなものではありません!
  • さらに、「node_modules」を含む現在のフォルダーにも、ここにリストされているモジュールが少ないpackage.jsonファイルがある場合、エラーが表示されます。

「rm package.json」と「npm ls」でエラーメッセージが表示されなくなりました。つまり、「node_modules」フォルダとpackage.jsonファイルが存在するかどうかを常に現在の場所で確認します。これらはチェックの最初に優先され、これらが欠落している場合、チェックは親フォルダに続きます。また、多くのコードスニペットをいじくり回している場合は、node_modulesフォルダーとpackage.jsonファイルが多数散在している可能性があります。J2EE Java開発/ Eclipse IDEを行っているときや、Windowsの設定を変更するためにregeditを使用しなければならない日とは異なり、ここでは実際には何も破損していません。


1

私の場合は、package.jsonファイル内のパッケージ名package.jsonが、依存するモジュールのにリストされている依存性名と同じではなかったためです。私のエラー、それは私が作成した新しいモジュールですが、npmは何の手掛かりも与えないため、見つけるのは困難です。

これdependencies: { "my-module": "file:local-modules/mymodule" }は、「my-module」という名前にタイプミスがある構文を使用したときに発生しました。


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