package.jsonにリストされていないpackage-lock.jsonの脆弱なnpmパッケージを修正するにはどうすればよいですか?


92

Githubから、package-lock.jsonファイルの依存関係が脆弱で古くなっていると言われています。問題は、npm installまたはを実行した場合npm update、どちらもpackage-lock.jsonファイルの依存関係を更新しないことです。

私はこれについて多くのグーグルを行い、ファイルを削除して完了しましたnpm install

誰かがこれを解決するのを手伝ってくれるなら、私はそれを大いに感謝します。問題のパッケージはHoekですが、実際にはpackage.jsonファイルにはありません。

よろしくお願いします。


2
package-lock.jsonを削除して、npm installを再度実行してみてください
Rishikesh Dhokare 2018年

1
依存関係をチェックして、どれがhoekに依存しているかを見つけ、それを更新することができます。(しかし、運が悪かった可能性もあり、その依存関係には新しいバージョンがありません。)
Roland Starke

@RishikeshDhokare
xpto

@RishikeshDhokareが言ったように私はしました。自分で解決した問題
melihsahin19年

回答:


41

Hoekは依存関係の1つの依存関係のようです(したがって、package.jsonにあるパッケージは、それ自体のpackage.jsonからそれを要求しています)。

プロジェクトの依存関係を削除/再インストールおよび更新しようとして成功しなかったため、問題のパッケージの依存関係に明示的なバージョンまたは最大バージョンが指定されているようです。

各依存関係のpackage.jsonが表示されない場合、更新を強制する方法についてさらにアドバイスすることは困難です。

編集: どのパッケージがどの依存関係を使用しているかを特定しやすくするために、NPMのlsコマンドを使用できます:https//docs.npmjs.com/cli/ls

たとえば、Hoekを使用しているパッケージを確認するには、次のようにします。 npm ls hoek

編集2: Ulysse BNが正しく指摘しているように、NPMバージョン6以降を使用npm audit fixしている場合は、NPMに脆弱性の修正を依頼するために使用できます。

編集3: これを読んでいる人は、以下のJBallinの回答もチェックする必要があります。これは、私がここで提供した情報を拡張したものであり、(私の意見では)OPの質問により適切に対処するより構造化された回答です。ただし、迅速な修正が必要な場合は、この回答で十分です。


3
別のパッケージ(Growl)でも同様の問題が発生しています。package.jsonGrowlの特定の(脆弱な)バージョンに依存するのは、私の中にある何かのバージョンだと思います。あなたの答えは正しい方向に進んでおり、に表示さpackage.jsonれている脆弱なパッケージに依存するパッケージを表示するコマンドを共有できれば、おそらくそれを釘付けにすることができますpackage-lock.json
fuhrmanator 2018年

更新された回答を参照してください。さらにヘルプが必要な場合は、新しい質問を作成してください。:)
Alex Mulchinock 2018年


追加の質問が必要でしたか?それらは重複しているように見えます。
JBallin

@JBallin私の答えはそれ以来何度か更新されています。元々重複として認定されていない可能性があります。
Alex Mulchinock 2018年

25

TLDR:を使用して親パッケージを更新しますnpm i $PARENT_PKG_NAME


注意

依存関係を更新するときは、重大な変更がないかCHANGELOGを確認する必要があります。

診断

npm audit脆弱なパッケージ(これにはpackage-lock.jsonファイルが必要なので、実行する必要があることに注意してくださいnpm i)と、依存関係にあるパッケージ(該当する場合)の両方が明らかになります。npm ls $CHILD_PKG_NAME親の依存関係を確認するためにも使用できることに注意してください。

クイックフィックスの試み

npm audit fixそしてnpm audit fix --forceAは試してみる価値があるが、時には修正は(下記参照)を手動で実行する必要があります。

手動修正

ほとんどの場合、親パッケージはすでに依存関係を修正しているため(GitHubにアクセスして最近のコミットを確認するか、これで修正されるかどうかを確認することで確認できます)、実行するだけでnpm i $PARENT_PKG_NAME @$NEW_VERSIONパッケージロックが更新されます。 .json。

親が脆弱性を修正していない場合

メンテナが応答していないように思われる場合は、同じことを実現する代替パッケージを使用するか、パッケージをフォークして脆弱性を自分で更新することを検討してください。

修正を確認する

これで、実行npm auditして脆弱性が表示されていないことを確認することで、機能したことを確認できます。変更をコミットし、GitHubにプッシュし、通知/アラートを更新すると、変更がなくなるはずです。


私の場合、親は更新でAPIを完全に変更し、そのライブラリを削除するフレームワークであるため、この回答のマニュアルも機能しません。これは、親フレームワークがまだ古いライブラリを使用しているためです。確かに、古いものはまだマンテナインされていますが、更新されていません。
カーマインタンバシア

1
@CarmineTambascia使用しているパッケージが脆弱性を修正していない場合(修正されることを期待して問題/ PRを開きます)-パッケージの独自のフォークを作成し、脆弱性を修正することを検討します。影響を受けるパッケージの場所。
JBallin

子パッケージを更新する方法はありますか?親パッケージの脆弱性が修正されていない場合は?
ハルシタ

「親が脆弱に固定されていない場合」の項を参照してください@Harshita
JBallin

1
@Harshitaあなたは彼らに連絡を取りましたか?これらの脆弱性も修正することは彼らの利益になります。
JBallin

6

npm @ 6以降をお持ちの場合npm audit fixは、セキュリティの問題に使用できます。


1
さまざまなツールがたくさんあり、それらには同じ脆弱性データベースがありません。私が最も網羅的だと思ったのはSnytchです。
ユリシーズBN19年

2

使用する:

npm i hoek

npmは最新バージョンのhoekをインストールし、package.lock.jsonが更新されます。


1

脆弱なnpmパッケージを確認するには、次のコマンドを使用します。

npm audit

脆弱なnpmパッケージを修正するには、package-lock.jsonも修正する次のコマンドを使用します。

npm audit fix

1

package-lock.json手動で編集し、脆弱なパッケージのバージョンを修正されたものに更新してから、

npm ci

それは最初にpackage-lock.json無視することによってに従ってパッケージをインストールしますpackage.json。次に、

npm audit fix

繰り返しますが、それが適切に行われたかどうかを確認します。それでも問題が解決しない場合は、他の特定のソリューションを使用してください。

詳細はこちら:

https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable

またはここ:https//docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities


追加の解決策は次のとおり
孤独な

0

この問題が発生しましたが、npmを実行していたサーバーに古いバージョンのnpmがインストールされていたことが原因であることがわかりました。package-lock.jsonは新しいバージョンでのみサポートされています。


0

これを試しましたか:プロジェクトルートに移動し、package-lock.jsonファイルnode_modules.cacheフォルダーを削除してから、npm install


-4

新しい依存関係をインストールした後、次のコマンドを実行してpackage-lock.jsonファイルを更新します。

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