NPM 从 Verdaccio 实例中提取损坏的包
NPM pulls corrupted packages from Verdaccio instance
当我在应用程序中执行基本 npm install
时,我正在尝试设置开发人员。损坏包的环境最终从我的 Verdaccio 代理实例中提取。
重现
重现该行为的步骤:
- 为我的项目设置 package.json,包括添加我的依赖项,
等等
- 将我的本地系统设置为使用我的 Verdaccio 实例:
npm set
registry [[Verdaccio Server URL]]:4873
。
- 在我有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 所在的服务器不在代理后面。
因此,在执行以下操作后,一切都按预期进行:
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
如果您回滚到 NPM 版本 3,它将再次开始工作。使用 NPM@3 发布到 Verdaccio,然后使用 NPM@>=5 拉取对我来说是这个问题。
不得不关闭 Verdaccio 的缓存
uplinks:
npmjs:
url: https://registry.npmjs.org/
cache: false
这似乎是您的 node/npm 而不是 Angular CLI 的问题。
我建议你尝试使用
npm cache clear --force
npm install
谢谢。
正在删除包-lock.json。它解决了我的问题。
我通过以下步骤解决了我的问题:
- 删除包-lock.json
- 运行
npm cache clear --force
- 运行
npm cache verify
- 运行
npm install
当我在应用程序中执行基本 npm install
时,我正在尝试设置开发人员。损坏包的环境最终从我的 Verdaccio 代理实例中提取。
重现
重现该行为的步骤:
- 为我的项目设置 package.json,包括添加我的依赖项, 等等
- 将我的本地系统设置为使用我的 Verdaccio 实例:
npm set registry [[Verdaccio Server URL]]:4873
。 - 在我有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 所在的服务器不在代理后面。
因此,在执行以下操作后,一切都按预期进行:
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
如果您回滚到 NPM 版本 3,它将再次开始工作。使用 NPM@3 发布到 Verdaccio,然后使用 NPM@>=5 拉取对我来说是这个问题。
不得不关闭 Verdaccio 的缓存
uplinks:
npmjs:
url: https://registry.npmjs.org/
cache: false
这似乎是您的 node/npm 而不是 Angular CLI 的问题。
我建议你尝试使用
npm cache clear --force
npm install
谢谢。
正在删除包-lock.json。它解决了我的问题。
我通过以下步骤解决了我的问题:
- 删除包-lock.json
- 运行
npm cache clear --force
- 运行
npm cache verify
- 运行
npm install