web-dev-qa-db-ja.com

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

Githubは、package-lock.jsonファイルの依存関係は脆弱であり、時代遅れだと言っています。問題は、npm installまたはnpm updateを実行すると、どちらもpackage-lock.jsonファイルの依存関係を更新しないことです。

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

誰かがこれを解決するのを手伝うことができれば、私は非常に感謝します。問題のパッケージはHoekで、package.jsonファイルには実際にはありません。

事前に感謝します。

55
Raph117

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

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

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

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

たとえば、どのパッケージがHoekを使用しているかを確認するには:npm ls hoek

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

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

21
Alex Mulchinock

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


診断

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

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

npm audit fixnpm audit fix --forceは試してみる価値がありますが、手動で修正する必要がある場合があります(以下を参照)。

手動修正

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

修正の確認

npm auditを実行し、脆弱性が現れていないことを確認することで、動作することを確認できます。変更をコミットしてGitHubにプッシュし、通知/アラートを更新すると、それらは消えるはずです!

11
JBallin

Npm @ 6以降を使用している場合は、セキュリティの問題に npm audit fix を使用できます。

2
Ulysse BN

つかいます:

npm i hoek

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

1
scorpion

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

0
jvvw

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

0
CakeL