npm 安装失败,Windows 上出现错误签名错误

sle*_*guy 7 openssl node.js npm npm-install

我正在使用 nvm 来管理我的节点版本。我有一个用户节点 6.10.2 的项目。像npm install -g gulp我收到以下错误一样简单:

write EPROTO 101057795:error:1408D07B:SSL routines:ssl3_get_key_exchange:bad signature:openssl\ssl\s3_clnt.c:20
Run Code Online (Sandbox Code Playgroud)

我在我的配置中添加了 strict-ssl false ,但没​​有帮助。我不是在代理后面,我已经在我的公司防火墙、家庭网络甚至我的移动热点后面尝试过,但都出现了同样的错误。我改为使用 http:// 而不是 https:// usingnpm config set registry http://registry.npmjs.org/这让我克服了 gulp 错误,但随后使用其他软件包返回错误(大概是因为它们是从不同的注册表中提取的)。无论如何,使用 http:// 让我担心安全性。

我在节点 6.10.2 和 7.4.0 上得到了相同的结果。如果我跳转到最新的节点 12.18.0,错误不会发生,但我正在处理的项目不支持新的节点版本。不知道还有什么可以尝试的。

这是 npm-debug.log 文件的错误部分:

103 verbose stack Error: write EPROTO 101057795:error:1408D07B:SSL routines:ssl3_get_key_exchange:bad signature:openssl\ssl\s3_clnt.c:2032:
103 verbose stack
103 verbose stack     at exports._errnoException (util.js:1018:11)
103 verbose stack     at WriteWrap.afterWrite (net.js:804:14)
104 verbose cwd C:\code\extraspace.web.pointofsale
105 error Windows_NT 10.0.18363
106 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "gulp"
107 error node v6.10.2
108 error npm  v3.10.10
109 error code EPROTO
110 error errno EPROTO
111 error syscall write
112 error write EPROTO 101057795:error:1408D07B:SSL routines:ssl3_get_key_exchange:bad signature:openssl\ssl\s3_clnt.c:2032:
Run Code Online (Sandbox Code Playgroud)

小智 1

免责声明对 Nodejs 没有那么丰富的经验,我给出的答案是我自己对这个问题的研究,希望能在某种程度上帮助你。

\n

参考文献:\n write-eproto-101057795...或\n common-proxy-and-networking-p...

\n

首先检查Nodejs是否正确安装

\n
- Open Command Prompt (Windows) or Terminal (Mac) or Bash (Linux)\n- Execute this command: node -v (The output should be "6.10.2")\n- Execute this command: npm -v (The output should be "(some-version)")\n
Run Code Online (Sandbox Code Playgroud)\n

尝试这个:

\n
- Open Command Prompt (Windows) or Terminal (Mac) or Bash (Linux)\n- Go to the "app" folder (Located on the same folder of this file)\n- Execute this command (*): npm install --development\n- Execute this command: npm start --development\n
Run Code Online (Sandbox Code Playgroud)\n

如果上述所有方法均失败,请检查下面的列表。

\n
    \n
  1. 确保您有有效的互联网连接。您可以访问https://registry.npmjs.org吗?可以访问其他网站吗?如果其他站点无法访问,这不是 npm 的问题。
  2. \n
  3. 检查http://status.npmjs.org/是否有任何潜在的当前服务中断。
  4. \n
  5. 如果您的公司有针对开发人员的域白名单流程,请确保https://registry.npmjs.org是列入白名单的域。
  6. \n
  7. 如果您在中国\xe2\x80\x99,请考虑使用https://npm.taobao.org/作为注册表,该注册表位于防火墙后面。
  8. \n
  9. 在 Windows 上,npm 不会访问在系统级别配置的代理,因此您需要手动配置它们才能让 npm 访问它们。确保您已将适当的代理配置添加到 .npmrc。
  10. \n
  11. 如果您已经配置了代理,则它可能配置不正确或使用了错误的凭据。验证您的凭据,使用单独的应用程序测试特定凭据。
  12. \n
  13. 服务器上的代理本身也可能存在配置错误。在这种情况下,您\xe2\x80\x99 将需要与系统管理员合作来验证代理和 HTTPS 是否配置正确。您可以通过运行常规 HTTPS 请求来测试它。
  14. \n
\n