テクノロジー · 実用ガイド

npm の EINTEGRITY?リセット前に期待値と受信 tarball を追跡する

不一致は lockfile、ローカルキャッシュ、プライベート registry やプロキシ、変更されたメタデータのどこでも起こり得ます。証拠を保存し、失敗した境界だけを修復します。

lockfile の期待ダイジェストと受信 tarball を比較するオリジナルイラスト。
オリジナルイラスト:EINTEGRITY の両側を変更前に保存します。 Watch at Ease

EINTEGRITY は、受信したパッケージのダイジェストが npm の期待値と一致しないという証拠です。lockfile の削除や TLS 検証の無効化を指示するエラーではありません。

失敗パッケージ、wanted/got、バイト数、resolved、integrity、registry、npm 版、隔離キャッシュの結果を一つの台帳にします。

不一致を由来記録として保存する

パッケージ、版、wanted/got、バイト数、npm/Node、コマンド、環境、debug log を記録します。registry と cache を確認しますが token は公開しません。

package-lock.json の resolved と integrity を保存します。受信側を試験する間、期待値である lockfile は変更しません。

消去前にローカルキャッシュを検証する

npm cache verify と npm doctor cache を実行します。内容アドレスと自動再取得の結果で診断を分けます。

新しい空キャッシュで同じインストールを再現します。成功すれば旧キャッシュを隔離し、同じ got なら別の境界を調べます。

直接経路と設定済み registry を比較する

resolved URL と設定から npmjs、プライベート registry、Verdaccio、Azure Artifacts、他のプロキシを特定します。strict SSL を無効にしません。

承認済みの直接経路とプロキシから同一パッケージを取得し、SHA-512、バイト数、redirect、content type を比較します。

lockfile、キャッシュ、registry の変化を分類する

隔離キャッシュが一致すれば旧キャッシュかローカル FS、直接経路だけ一致すればプロキシ境界です。ログを保存して一つの artifact だけを失効させます。

どの承認済み経路も一致しないなら再公開、誤ったミラー、有意な変更を調査し、レビュー後にだけ lockfile を再生成します。

再現可能な CI 証拠で終了する

同じ lockfile と registry で再試行し、終了コード、cache、最終 digest、lockfile の不変を確認します。

CI の cache key に lockfile hash と registry を反映し、最初の失敗 log を保存します。

ローカルキャッシュ、プロキシ、由来変更、未知を分けるオリジナルイラスト。
オリジナルイラスト:同じ不一致でも修復境界は異なります。 Watch at Ease