npm install:提取时验证失败
npm install: Verfication failed while extracting
回答前先阅读: 我已经解决了这个问题。这是 npm 服务器上的缓存问题。切换到 GitHub 包后一切正常。我已经接受 .
我有一个项目,我想将其部署到 elastic beanstalk,但有时在 npm 安装脚本上部署失败并显示以下消息:
npm ERR! code EINTEGRITY
npm ERR! Verification failed while extracting @my-package@^1.2.0:
npm ERR! Verification failed while extracting @my-package@^1.2.0:
npm ERR! sha512-lQ...HA== integrity checksum failed when using sha512: wanted sha512-lQ...HA== but got sha512-nH...ow==. (4835509 bytes)
即使在几个星期前的包裹上它也会失败。
我试过:
npm cache clean --force
npm cache verify
node_modules
在 .npmignore
package-lock.json
在 .npmignore
正在写邮件给支持@npmjs.com,但他们总是回复一些无奈的默认回复,没有任何解决方案或意图提供帮助。
即使在新的弹性 beantalk 实例上它也会失败。
我不知道如何解决这个问题。
编辑: 我也尝试在预安装脚本时删除 npm 缓存,但它也不起作用。
EDIT2: 我的仓库没有 package-lock.json
.
EDIT3: 我的 .npmrc
文件具有以下内容
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
unsafe-perm=true
package-lock=false
strict-ssl=false
EDIT4: 我认为不清楚:它是官方 npm 注册表中的私有包。而且它并不总是失败。当前的发布过程包括多次尝试在 aws 实例上部署,只要它成功即可。
可能是这些实例上的 NPM 版本已过时。你可以试试:npm install -g npm
您确定当它被部署到 beantalk 时包锁文件不在实例上吗? - 如果您有坏锁文件,需要将其删除并重新生成。
除此之外,您似乎已经用尽了很多选择,因此需要更多信息。
如果您请求的版本在注册表中不可用,就会发生这种情况。
对于 @my-package@^1.2.0
,您请求的版本介于 >=1.2.0 和 <2.0.0 之间。难不成这个registry上只有比1.2.0旧或者比2.0.0新的版本? Npm 将安装它获得的任何内容,并且不会在此处引发错误。
您可以通过查看 node_modules/my-package/package.json
.
来检查您在 npm 安装中获得的版本
如果在执行本地 npm install
时没有发生这种情况,请检查亚马逊使用的 npm 注册表是否包含您的 my-package
包。
您可以尝试将官方 npm 注册中心添加到您的 Beanstalk 项目中,以检查是否是 Amazon npm 注册中心没有包含您的包。请参阅 How to use a private npm registry on Elastic Beanstalk? 如何执行此操作。
- 这似乎是一个包-lock.json问题。
如本
如果你没有在你的 repo 中推送 package-lock.json,它将在 运行 npm install 时生成。所以最好在 repo 中添加 package-lock.json 以避免本地机器和部署机器上的 package-lock.json 文件不一致。
能否请您尝试将新的包 -lock.json 文件推送到存储库并尝试?
您是否尝试删除包-lock.json?
或
尝试删除 npm 和 npm-cache 文件夹
然后
重新运行 npm 安装
这似乎是 npm 服务器的缓存问题。我们已经从 npm 切换到 GitHub 包,那里一切正常。
不完全是你的情况,但对于那些 运行 进入 "integrity checksum failed" 错误的人来说,以下可能会有所帮助。但首先要确保你了解发生了什么。 npm
告诉您来自 https://registry.npm.org 的校验和与来自 package-lock.json
的校验和不匹配。它要么在注册表中更改,要么...
考虑输出中的一行:
npm ERR!
sha512-lQ...HA==
integrity checksum failed when using sha512: wanted
sha512-lQ...HA==
but got
sha512-nH...ow==
. (4835509 bytes)
通过前两个完整性校验和(sha512-lQ...HA==
)找到package-lock.json
中的包,并将第三个(sha512-nH...ow==
)放入其"integrity"字段中。
更多内容here。
主要是关注npm registery,一些home npm registery已经更新到另一个url。
您可以运行下面的命令查看npm registery
npm config get registry
应该设置吧
如果不是,则 运行 下面的命令
npm config set registry https://registry.npmjs.org/
它将设置 npm registery。现在您可以再试一次
npm i
它会成功安装包。
就我而言,正如 razki 所暗示的,构建服务器上的 npm/node 版本与开发人员本地计算机上的版本有很大不同。更新到足够接近的版本解决了这个问题。
例如:
构建服务器有:npm/6.13.4 node/v12.14.1
开发者有: npm/6.14.8 node/v14.15.1.
现在的构建服务器:npm/6.14.10 node/v14.15.4
似乎不同版本对同一个包的sha计算不同。这就是为什么删除 package-lock.json 文件可以在这种特定情况下起作用的原因 - 至少有一段时间,直到具有不同版本的计算机再次尝试构建项目。
回答前先阅读: 我已经解决了这个问题。这是 npm 服务器上的缓存问题。切换到 GitHub 包后一切正常。我已经接受
我有一个项目,我想将其部署到 elastic beanstalk,但有时在 npm 安装脚本上部署失败并显示以下消息:
npm ERR! code EINTEGRITY
npm ERR! Verification failed while extracting @my-package@^1.2.0:
npm ERR! Verification failed while extracting @my-package@^1.2.0:
npm ERR! sha512-lQ...HA== integrity checksum failed when using sha512: wanted sha512-lQ...HA== but got sha512-nH...ow==. (4835509 bytes)
即使在几个星期前的包裹上它也会失败。
我试过:
npm cache clean --force
npm cache verify
node_modules
在.npmignore
package-lock.json
在.npmignore
正在写邮件给支持@npmjs.com,但他们总是回复一些无奈的默认回复,没有任何解决方案或意图提供帮助。
即使在新的弹性 beantalk 实例上它也会失败。
我不知道如何解决这个问题。
编辑: 我也尝试在预安装脚本时删除 npm 缓存,但它也不起作用。
EDIT2: 我的仓库没有 package-lock.json
.
EDIT3: 我的 .npmrc
文件具有以下内容
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
unsafe-perm=true
package-lock=false
strict-ssl=false
EDIT4: 我认为不清楚:它是官方 npm 注册表中的私有包。而且它并不总是失败。当前的发布过程包括多次尝试在 aws 实例上部署,只要它成功即可。
可能是这些实例上的 NPM 版本已过时。你可以试试:npm install -g npm
您确定当它被部署到 beantalk 时包锁文件不在实例上吗? - 如果您有坏锁文件,需要将其删除并重新生成。
除此之外,您似乎已经用尽了很多选择,因此需要更多信息。
如果您请求的版本在注册表中不可用,就会发生这种情况。
对于 @my-package@^1.2.0
,您请求的版本介于 >=1.2.0 和 <2.0.0 之间。难不成这个registry上只有比1.2.0旧或者比2.0.0新的版本? Npm 将安装它获得的任何内容,并且不会在此处引发错误。
您可以通过查看 node_modules/my-package/package.json
.
如果在执行本地 npm install
时没有发生这种情况,请检查亚马逊使用的 npm 注册表是否包含您的 my-package
包。
您可以尝试将官方 npm 注册中心添加到您的 Beanstalk 项目中,以检查是否是 Amazon npm 注册中心没有包含您的包。请参阅 How to use a private npm registry on Elastic Beanstalk? 如何执行此操作。
- 这似乎是一个包-lock.json问题。
如本
如果你没有在你的 repo 中推送 package-lock.json,它将在 运行 npm install 时生成。所以最好在 repo 中添加 package-lock.json 以避免本地机器和部署机器上的 package-lock.json 文件不一致。
能否请您尝试将新的包 -lock.json 文件推送到存储库并尝试?
您是否尝试删除包-lock.json?
或
尝试删除 npm 和 npm-cache 文件夹
然后
重新运行 npm 安装
这似乎是 npm 服务器的缓存问题。我们已经从 npm 切换到 GitHub 包,那里一切正常。
不完全是你的情况,但对于那些 运行 进入 "integrity checksum failed" 错误的人来说,以下可能会有所帮助。但首先要确保你了解发生了什么。 npm
告诉您来自 https://registry.npm.org 的校验和与来自 package-lock.json
的校验和不匹配。它要么在注册表中更改,要么...
考虑输出中的一行:
npm ERR!
sha512-lQ...HA==
integrity checksum failed when using sha512: wanted
sha512-lQ...HA==
but got
sha512-nH...ow==
. (4835509 bytes)
通过前两个完整性校验和(sha512-lQ...HA==
)找到package-lock.json
中的包,并将第三个(sha512-nH...ow==
)放入其"integrity"字段中。
更多内容here。
主要是关注npm registery,一些home npm registery已经更新到另一个url。
您可以运行下面的命令查看npm registery
npm config get registry
应该设置吧
如果不是,则 运行 下面的命令
npm config set registry https://registry.npmjs.org/
它将设置 npm registery。现在您可以再试一次
npm i
它会成功安装包。
就我而言,正如 razki 所暗示的,构建服务器上的 npm/node 版本与开发人员本地计算机上的版本有很大不同。更新到足够接近的版本解决了这个问题。
例如:
构建服务器有:npm/6.13.4 node/v12.14.1
开发者有: npm/6.14.8 node/v14.15.1.
现在的构建服务器:npm/6.14.10 node/v14.15.4
似乎不同版本对同一个包的sha计算不同。这就是为什么删除 package-lock.json 文件可以在这种特定情况下起作用的原因 - 至少有一段时间,直到具有不同版本的计算机再次尝试构建项目。