【问题标题】:NPM pulls corrupted packages from Verdaccio instanceNPM 从 Verdaccio 实例中提取损坏的包
【发布时间】:2018-06-13 17:26:11
【问题描述】:

当我在应用程序中执行基本的npm install 时,我正在尝试设置开发人员。损坏包的环境最终会从我的 Verdaccio 代理实例中提取出来。

复制

重现行为的步骤:

  1. 为我的项目设置 package.json,包括添加我的依赖项, 等等。
  2. 将我的本地系统设置为使用我的 Verdaccio 实例:npm set registry [[Verdaccio Server URL]]:4873
  3. 在我有 package.json 的目录中执行 npm install

结果

我得到了大量类似于以下内容的输出:

npm http fetch GET 200 [[Proxy NPM Site]]/@angular%2fplatform-browser-dynamic/-/platform-browser-dynamic-5.2.11.tgz 6430ms
npm WARN tarball tarball data for @angular/router@5.2.11 (sha512-NT8xYl7Vr3qPygisek3PlXqNROEjg48GXOEsDEc7c8lDBo3EB9Tf328fWJD0GbLtXZNhmmNNxwIe+qqPFFhFAA==) seems to be corrupted. Trying one more time.
npm WARN tarball tarball data for jquery@3.3.1 (sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==) seems to be corrupted. Trying one more time.
npm WARN tarball tarball data for ng-bootstrap@1.6.3 (sha1-1B/UIVTAWTQiy4PEc6OCiqdSW/U=) seems to be corrupted. Trying one more time.

注意包的 URL 编码名称,在本例中为 @angular%2fplatform-browser-dynamic。当我将代理设置为 https://registry.npmjs.org/ 时,我没有收到此信息。

当然,我想做的是能够像连接到官方注册表一样执行npm install

配置和日志文件

其他信息

  • NPM 版本:最新 - 6.1.0,但它发生在旧版本中。
  • Verdaccio 运行的节点版本:10.4.0
  • 客户端的节点版本 正在运行:10.4.0

环境:Windows Server 2012 (SP2)

Verdaccio 所在的服务器不在代理后面。

【问题讨论】:

标签: node.js npm npmjs sinopia


【解决方案1】:

所以在执行以下操作后,一切都按预期工作了:

rmdir /S /Q node_modules (or rm -rf node_modules on a *nix derivative OS)
del package-lock.json (or rm package-lock.json on a *nix derivative OS)
npm set registry [[My Verdaccio Instance's IP]]:4873
npm cache clean --force
npm install --force --verbose --no-bin-links

【讨论】:

  • 删除 package-lock.json 是我让 npm 重回正轨所需要的。
  • 我尝试了以上所有方法,但在我经典重启计算机之前都没有奏效。
  • 在过去的三个小时里,我已经准备好用头撞墙了。 rm package-lock.json 工作。非常感谢
  • 删除 package-lock.json 对我有用。我对下面可能发生的事情有一个模糊的想法。就我而言,这似乎与校验和不匹配有关。之前安装的 package-lock.json 中的校验和和版本与从 verdaccio 提取的包不匹配(为什么我的更新包的版本号相同?-> 这是一个与项目相关的 hack)。这可能是删除 package-lock.json 后它起作用的原因
【解决方案2】:

如果您回滚到 NPM 版本 3,它将重新开始工作。使用 NPM@3 发布到 Verdaccio,然后使用 NPM@>=5 拉取对我来说是这个问题。

【讨论】:

  • 我已经有这个问题好几个月了,总是跳过这个答案。这实际上解决了我所有的问题。
【解决方案3】:

我通过以下步骤解决了我的问题:

  1. 删除 package-lock.json
  2. 运行npm cache clear --force
  3. 运行npm cache verify
  4. 运行npm install

【讨论】:

    【解决方案4】:

    这似乎是您的 node/npm 的问题,而不是 Angular CLI 的问题。

    我建议你尝试使用

    1. npm cache clear --force
    2. npm install

    谢谢。

    【讨论】:

      【解决方案5】:

      不得不关闭 Verdaccio 的缓存

      uplinks:
        npmjs:
          url: https://registry.npmjs.org/
          cache: false
      

      【讨论】:

      • 恕我直言,这不会降低私人回购的用处吗?缓存可以让您减少流量等。
      【解决方案6】:

      删除 package-lock.json。它解决了我的问题。

      【讨论】:

        猜你喜欢
        • 2020-03-18
        • 1970-01-01
        • 1970-01-01
        • 2012-05-28
        • 2013-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多