科技 · 實用指南
npm 顯示 EINTEGRITY?重設前先追查預期與實際收到的 tarball
校驗和不一致可能來自舊 lock 條目、損壞的本機快取、私有 registry 或代理回傳不同位元組,也可能是套件中繼資料變更。先保存證據,確認精確來源,再只修復失敗邊界。

EINTEGRITY 表示 npm 對收到的套件位元組計算出的摘要,與預期摘要不同。這個錯誤是證據,不是立刻刪除 package-lock.json、關閉 TLS 檢查或清空全部快取的指令。
建立位元組來源帳本:保存失敗套件、wanted/got 摘要、位元組數、lockfile 來源與 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 與 registry 設定確認 npm 經過 npmjs、私有 registry、Verdaccio 或其他代理。不要關閉 strict SSL。
在受控環境經批准直連與代理取得同一套件,計算 SHA-512,比較位元組數、重新導向與內容類型。
區分 lockfile 漂移、快取損壞與 registry 變更
隔離快取符合 lockfile,邊界在舊快取或檔案系統;直連符合而代理不符時,保存代理記錄並只失效受影響 artifact。
若批准來源都不符合已提交 integrity,調查重新發布、錯誤鏡像或有意變更;團隊接受來源變更後才重建 lockfile。
以可重現 CI 證據結案
以相同 lockfile 與 registry 重試,記錄退出碼、快取路徑與最終摘要,確認 lockfile 未意外變更。
CI 快取鍵區分 lockfile hash 與 registry,並保存首次失敗記錄。刪除證據後變綠不能解釋不同位元組。
