【问题标题】:npm install: Verfication failed while extractingnpm install:提取时验证失败
【发布时间】:2020-02-14 12:23:50
【问题描述】:

回答前阅读:我已经解决了这个问题。这是 npm 服务器上的缓存问题。切换到 GitHub 包后一切正常。我已经接受my own answer




我有一个项目,我想将其部署到弹性 beanstalk,但有时在 npm install 脚本上部署失败并显示以下消息:

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

  • 写邮件到 support@npmjs.com,但他们总是回复一些无助的默认回复,没有任何解决方案或提供帮助的意图。

即使在新的弹性豆茎实例上也会失败。

我不知道如何解决这个问题。

编辑:我也尝试在预安装脚本时删除 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 实例上部署,只要成功即可。

【问题讨论】:

    标签: javascript node.js npm npm-install


    【解决方案1】:

    你试过删除 package-lock.json 吗?

    尝试删除 npm 和 npm-cache 文件夹

    那么

    重新运行 npm install

    【讨论】:

    • 谢谢哥们!这对我帮助很大。
    【解决方案2】:

    不完全是您的情况,但对于那些遇到“完整性校验和失败”错误的人,以下可能会有所帮助。但首先要确保你了解发生了什么。 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==) 放入其“完整性”字段。

    更多信息here

    【讨论】:

      【解决方案3】:

      这似乎是 npm 服务器的缓存问题。我们已经从 npm 切换到 GitHub 包,那里一切正常。

      【讨论】:

        【解决方案4】:

        可能是这些实例上的 NPM 版本已过期。你可以试试吗:npm install -g npm

        您是否确定在将其部署到 beanstalk 时包锁定文件不在实例上? - 如果你有一个坏锁文件,它需要被删除并重新生成。

        除此之外,还需要更多信息,因为您似乎已经用尽了很多选择。

        【讨论】:

        • 无法在弹性 beanstalk 上运行 npm 命令(或更新其版本)。该版本在设置中定义,我选择了 AWS 提供的最新版本 (6.9.0)。但是,它有时甚至会在我的最新版本 6.13.0 的本地计算机上失败。不是,任何地方都没有 package-lock.json。
        • 我明白了。包是内部包吗?还是来自 NPM 注册表? - 可能是网络问题。如果没有您的 EB 配置文件,很难给您一个准确的答案
        • 这发生在私有包上,但它们都存储在默认的 npm 注册表中。所以这不可能是网络错误。您需要从我的 EB 设置中获得什么?但我不认为这是特定于 EB 的错误。
        【解决方案5】:

        如果您请求的版本在注册表中不可用,则可能会发生这种情况。

        使用@my-package@^1.2.0,您请求的版本介于 >=1.2.0 和

        您可以通过查看node_modules/my-package/package.json 来检查您在 npm 安装中获得的版本。

        如果在执行本地 npm install 时没有发生这种情况,请检查 Amazon 使用的 npm 注册表是否包含您的 my-package 包。

        您可以尝试将官方 npm 注册表添加到您的 Beanstalk 项目中,以检查是否是 Amazon npm 注册表不包含您的包。请参阅How to use a private npm registry on Elastic Beanstalk? 如何执行此操作。

        【讨论】:

        • 我的模块发布在官方 npm 注册表上。看看主帖中的EDIT3
        • 你的 npm 包叫什么名字?你能在你的 package.json 中分享你请求的版本吗?
        • 我不能告诉你包的名字,因为它是私有的。即使我使用确切的版本,它也会失败。
        • 啊哈,这是一个私人包。您是否也将 .npmrc 文件中的凭据部署到弹性 beanstalk?
        • 是的,我愿意。我在原来的帖子中添加了这个。
        【解决方案6】:
        • 这似乎是一个 package-lock.json 问题。 就像这个answer

        如果您没有在 repo 中推送 package-lock.json,它将在运行 npm install 时生成。所以最好在 repo 中添加 package-lock.json 以避免本地机器和部署机器之间的 package-lock.json 文件不一致。

        您能否尝试将新的 package-lock.json 文件推送到 repo 并尝试?

        【讨论】:

        • 这不是一个好主意,因为我将我的项目用作 lerna mono repo。即使我启用在本地创建 package-lock.json 文件,它也不会包含失败的相关 npm 模块。并且这个文件的创建在任何地方都被禁用,即使在生产服务器上也是如此。
        【解决方案7】:

        就我而言,正如 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 文件可以在这种特殊情况下起作用的原因 - 至少在一段时间内,直到具有不同版本的计算机再次尝试构建项目。

        【讨论】:

          【解决方案8】:

          基本上它对 npm registery 的关注,一些 home npm registery 已经更新到另一个 url。

          你可以运行下面的命令来查看 npm registery

          npm config get registry
          
          

          应该设置一下

          https://registry.npmjs.org/

          如果不是,则在命令下方运行

          npm config set registry https://registry.npmjs.org/
          

          它将设置 npm 注册。现在你可以再试一次

          npm i
          

          它会成功安装包。

          【讨论】:

            猜你喜欢
            • 2018-10-04
            • 1970-01-01
            • 2020-12-27
            • 2020-04-04
            • 1970-01-01
            • 2016-01-22
            • 2019-02-23
            • 2017-06-17
            • 1970-01-01
            相关资源
            最近更新 更多