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

时间:2017-06-22 12:11:02

标签: node.js npm npm-install modernizr

安装我的软件包时遇到了这个错误:

$ 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

7 个答案:

答案 0 :(得分:3)

我有同样的错误,我解决了它:

  1. 正在删除package-lock.json
  2. 正在运行“npm install”

答案 1 :(得分:1)

完整性字段的要点是在某些内容发生变化时提醒您,因此如果您不希望它存在,则可以在npmrc中禁用package-lock.json文件。只需设置package-lock=false

即可

注意:我是Modernizr的开发人员,并就此问题与npm-cli团队进行了交谈。根本原因似乎是npm5和早期版本之间SHA类型的更改。 Nuking node_modules文件夹将修复它

答案 2 :(得分:1)

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

    npm outdated -g sudo npm i -g outDatedPKG

  2. 使用以下命令将npm升级到lateste版本:

    sudo npm i -g npm

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

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

    npm cache verify

    4.1。每次我收到错误,请执行第2步和第2步。 3。

  5. 如果仍然出现错误,请清除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上还有gulpgrunt工具的等价物,选择和使用你最喜欢的工具。

使用它们之后,我们最终摆脱了返回EINTEGRITY npm错误而没有查看package-lock.jsonnode_modules

答案 6 :(得分:0)

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

如果已解决,请清除全局npm缓存以修复损坏。