EINTEGRITY:npm 5.0 完整性检查和 modernizr.com 依赖

EINTEGRITY: npm 5.0 integrity check and modernizr.com dependency

我在安装包的 deps 时遇到了这个错误:

$ npm i
npm ERR! code EINTEGRITY
npm ERR! sha1-tU7jWojzuU8MIY2VLAx+BwluNo0= integrity checksum failed when using sha1: wanted sha1-tU7jWojzuU8MIY2VLAx+BwluNo0= but got sha1-oXYP0kzpbhku0KU+phy353lbBhQ=. (26624 bytes)

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/tlenex/.npm/_logs/2017-06-22T10_18_19_773Z-debug.log

问题出在我的 Modernizr 依赖项上:

"dependencies": {
  "Modernizr": "https://modernizr.com/download?setclasses-flash"
}

有什么方法可以解决这个问题或忽略这个完整性检查吗?

目前我必须运行

npm i https://modernizr.com/download?setclasses-flash

再次让事情正常进行,它覆盖了我的 package-lock.json"Modernizr""integrity" 字段。 每次从这个 link 获取的 Modernizr 包发生变化并且我的包依赖项需要重新安装时(例如,每次 CI 构建)

如果没有其他办法解决呢?我希望我不必在我的 .gitignore 文件中放置 package-lock.json :(

关于我的环境的更多数据:

$ npm -v
5.0.3
$ node -v
v6.11.0

完整性字段的作用是在发生变化时提醒你,所以如果你不希望它存在,你可以在你的 npmrc 中禁用 package-lock.json 文件。只需设置 package-lock=false

注意:我是 Modernizr 的开发者,并与 npm-cli 团队讨论过这个问题。根本原因似乎是 npm5 和早期版本之间 SHA 类型的变化。核对 node_modules 文件夹将修复它

  1. 查找所有过时的包并更新主题:

    npm outdated -g sudo npm i -g outDatedPKG

  2. 将 npm 升级到最新版本:

    sudo npm i -g npm

  3. 删除 package-lock.json 文件。

  4. 删除 ~/.npm 中的 _cacache 目录:

    npm cache verify

    4.1。每次出现该错误时,请执行第 2 步和第 3 步。

  5. 如果仍然出现错误,请清除 npm 的缓存:

    npm cache clean --force

只要做两件事就可以解决

第一: npm 缓存清理 --force

秒: npm i -g npm

然后安装你想要的

我遇到了同样的错误,我通过以下方式解决了它:

  1. 正在删除包-lock.json
  2. 运行 "npm install"

我终于解决了这个问题。

我们的团队放弃了没有 SEMVER 符号的 URL 依赖,在本例中 https://modernizr.com/download?setclasses-flash 并使用 modernizr-loaderwebpack。在 npm 上也有 gulpgrunt 工具的等价物,选择并使用你最喜欢的一个。

在使用它们之后,我们终于摆脱了返回 EINTEGRITY npm 错误而无需使用 package-lock.jsonnode_modules.

  • $ rm -rf package-lock.json node_modules
  • $ npm install --cache /tmp/empty-npm-cache

如果这解决了问题,请清除您的全局 npm 缓存以修复损坏。

编辑包-lock.json,找到你想跳过的那个,在这种情况下就是它失败的那个

sha1-tU7jWojzuU8MIY2VLAx+BwluNo0

并从中删除完整性参数,即

},
"range-parser": {
  "version": "1.2.0",
  "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
  "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
  "dev": true
},

到...

},
"range-parser": {
  "version": "1.2.0",
  "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
  "dev": true
},

之后运行 npm install,会检查剩下的,跳过这个完整性