安装我的软件包时遇到了这个错误:
$ 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
再次让事情有效,这会覆盖"integrity"
中"Modernizr"
的{{1}}字段。
每次从此链接获取的package-lock.json
包中发生更改并且需要重新安装我的包依赖项时(例如,每次在CI构建时)都可能发生这种情况
如果没有其他办法解决这个问题?我希望我不必将Modernizr
放在我的package-lock.json
文件中:(
有关我的环境的更多数据:
.gitignore
答案 0 :(得分:3)
我有同样的错误,我解决了它:
答案 1 :(得分:1)
完整性字段的要点是在某些内容发生变化时提醒您,因此如果您不希望它存在,则可以在npmrc中禁用package-lock.json文件。只需设置package-lock=false
注意:我是Modernizr的开发人员,并就此问题与npm-cli团队进行了交谈。根本原因似乎是npm5和早期版本之间SHA类型的更改。 Nuking node_modules
文件夹将修复它
答案 2 :(得分:1)
查找所有过时的软件包并更新主题:
npm outdated -g
sudo npm i -g outDatedPKG
使用以下命令将npm升级到lateste版本:
sudo npm i -g npm
删除package-lock.json
文件。
删除〜/ .npm中的_cacache
目录:
npm cache verify
4.1。每次我收到错误,请执行第2步和第2步。 3。
如果仍然出现错误,请清除npm的缓存:
npm cache clean --force
答案 3 :(得分:1)
编辑 package-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 之后,会检查其余的,跳过这个完整性
答案 4 :(得分:0)
为解决方案做两件事
首先: npm cache clean --force
第二名: npm i -g npm
并安装你想要的东西
答案 5 :(得分:0)
我终于解决了这个问题。
我们的团队在没有SEMVER表示法的情况下远离了URL依赖,在这种情况下https://modernizr.com/download?setclasses-flash
并使用了modernizr-loader
webpack
。在npm上还有gulp
和grunt
工具的等价物,选择和使用你最喜欢的工具。
使用它们之后,我们最终摆脱了返回EINTEGRITY
npm错误而没有查看package-lock.json
或node_modules
。
答案 6 :(得分:0)
如果已解决,请清除全局npm缓存以修复损坏。