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

tle*_*nex 5 node.js npm modernizr npm-install

我在安装软件包的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
Run Code Online (Sandbox Code Playgroud)

问题是我的Modernizr依赖关系:

"dependencies": {
  "Modernizr": "https://modernizr.com/download?setclasses-flash"
}
Run Code Online (Sandbox Code Playgroud)

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

目前我要跑步

npm i https://modernizr.com/download?setclasses-flash
Run Code Online (Sandbox Code Playgroud)

再次使工作正常,这将覆盖my中的"integrity"字段。每当从此链接获取的软件包发生更改并且需要重新安装我的软件包依赖项时(例如,每次在CI构建中),都可能发生这种情况"Modernizr"package-lock.jsonModernizr

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

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

$ npm -v
5.0.3
$ node -v
v6.11.0
Run Code Online (Sandbox Code Playgroud)

小智 5

编辑 package-lock.json ,找到您想要跳过的那个,在这种情况下是失败的那个

sha1-tU7jWojzuU8MIY2VLAx+BwluNo0
Run Code Online (Sandbox Code Playgroud)

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

},
"range-parser": {
  "version": "1.2.0",
  "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
  "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
  "dev": true
},
Run Code Online (Sandbox Code Playgroud)

到...

},
"range-parser": {
  "version": "1.2.0",
  "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
  "dev": true
},
Run Code Online (Sandbox Code Playgroud)

之后运行 npm install,将检查其余部分,跳过此完整性


tle*_*nex 0

我终于解决了这个问题。

我们的团队摆脱了没有 SEMVER 表示法的 URL 依赖,在本例中https://modernizr.com/download?setclasses-flashmodernizr-loaderwebpack. npm 上也有可用的等效工具gulpgrunt工具,选择并使用您最喜欢的一个。

使用它们后,我们终于摆脱了返回EINTEGRITYnpm 错误,而无需 nukingpackage-lock.jsonnode_modules.