为什么npm在安装@angular/cli时抛出“checksum failed”错误?

11

我正在使用node v6.11.5和npm 3.10.10以及64位操作系统,在安装@angular/cli时出现以下错误:

C:\WINDOWS\system32>npm install -g @angular/cli
npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\
node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "@angular/cli"
npm ERR! node v6.11.5
npm ERR! npm  v3.10.10

npm ERR! shasum check failed for C:\Users\Shubham\AppData\Local\Temp\npm-6192-9e
acb63c\registry.npmjs.org\rxjs\-\rxjs-5.5.2.tgz
npm ERR! Expected: 28d403f0071121967f18ad665563255d54236ac3
npm ERR! Actual:   c2b697120c7dc0e6728da0e7636b90e15723cc24
npm ERR! From:     http://registry.npmjs.org/rxjs/-/rxjs-5.5.2.tgz
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     C:\WINDOWS\system32\npm-debug.log

自昨晚以来,我一直在尝试解决这个问题,但每次都出现 shasum 检查失败的错误。我尝试了以下方法:

  1. 我将 npm 注册表配置为 http 和 https 两种方式,但都没有成功。
  2. 检查操作系统路径变量和 node 安装目录的路径,但没有发现问题。
  3. 尝试清理 npm、卸载和安装 angular/cli,但也没有成功。

你看到2012年的这个帖子了吗?:https://github.com/npm/npm/issues/2701(#issuecomment-40927831解释了一个注册表解决方法)。 - stealththeninja
如果您尝试安装其他模块,校验和是否失败? - stealththeninja
1
我没有尝试安装除@angular/cli之外的模块。我一会儿会向您更新此事。是的,我已经检查了那个问题,但它并没有解决我的问题。 - snegi
@stealththeninja 尝试安装 Express 但没有成功!还需要帮助吗?如果您需要日志文件,我也可以提供给您。 - snegi
今天是星期一,还在控制台挥舞着错误。 - snegi
8个回答

27
本地设置问题很难调试,因为需要进行大量的试错,需要记录您尝试过的内容和结果。这是一个建议列表的尝试。我猜你已经尝试了其中许多,希望这可以帮助组织你的工作。
1. 验证npm registrynpm get registry(期望值:https://registry.npmjs.org/) 2. 将npm更新到最新版本:npm install npm@latest -g 3. 删除package-lock.json 4. 卸载完全卸载npm之前重新安装, 包括npm和npm-cache目录:sudo npm uninstall npm -g 5. 完全卸载node(再次包括npm)并重新安装
在此过程中,我确实遇到了类似的github问题:

嗨 @Rogasch,我建议你完全卸载 node 和 npm。 同时删除 npm 和 npm-cache 文件夹。然后使用 node-v6.11.2-x86.msi 安装程序进行重新安装。 3 ❤️ 1

我遇到了同样的问题,npm install -g npm 对我有用。

当我包含 package-lock.json 提交时,出现了这个问题。删除 package-lock.json 后,我可以再次无错误地运行 npm install。


3
为什么注册表相同时我们会出现“校验和”错误,我还是不理解?我不明白为什么使用“npm install -g npm”命令可以解决这个问题? - Olivier Boissé
我也不知道。但是,对我来说,“npm install -g npm”解决了问题! - Leonardo Alves Machado

6
我删除了文件 package-lock.json 并重新运行了 npm install

4
如果你想使用 package-lock.json 中指定的确切版本,那么这并不是一个好的解决方案。 - Olivier Boissé
这个答案解决了我的问题。Git从未更新package-lock文件。我以为这是一个管道问题。 - BinaryPatrick
1
这个答案向我指出了npm与校验和的工作方式。我正在本地的npm仓库上工作,我已经删除了一个版本的包,并用同一版本的另一个包替换了它(顺便说一句,这是非常糟糕的做法,但我认为在我的特定情况下这是相关的)。我只是替换了package-lock.json文件中的sha512值,而不是删除整个package-lock.json文件。 - Charles HETIER

3

这是一个在Windows上的构建问题,请尝试以下步骤:

npm install -g node-gyp

npm install --global windows-build-tools

npm install -g angular-cli

安装您推荐的模块时出现了相同的错误。Windows 不是问题。如果您有其他解决方案,请告诉我。 - snegi
这些包到底是什么意思呢?例如,node-gyp @FatehM。 - snegi
这是一个用于构建Node.js本地插件的工具 https://github.com/nodejs/node-gyp - Fateh Mohamed
好的,请尝试清理“npm cache clean”,可能您的版本已损坏,然后再重新启动。 - Fateh Mohamed
Angular-cli 需要 Python。 - Adouani Riadh

1

以管理员身份运行PowerShell,然后运行这些命令。

npm cache clean --force

npm install -g @angular/cli

1
在我们的Ubuntu 18.04上,我们只需要执行以下操作:
npm install npm@latest -g

0

重新安装Node,然后安装最新版本的Angular CLI。


0

通过前往 %AppData% 并删除 npmnpm-cache,然后重试即可解决问题。


不,我尝试过了,但这不是原因。问题出在别的地方。 - snegi

-1

对我来说,我的注册表地址是http而不是https。当我检查我的注册表地址时,

npm check registry 

我看到了http://registry.npmjs.org/。我使用https版本更改了我的注册表地址。

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

所有问题都消失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接