我在正确安装 NPM 时遇到问题。我已尝试逐步执行有关堆栈溢出的几篇文章中的说明,特别是来自此线程的说明: 使用 npm install 时出现 SELF_SIGNED_CERT_IN_CHAIN 错误
我还尝试浏览 NPM 网站上的文档: https://blog.npmjs.org/post/78165272245/more-help-with-self-signed-cert-in-chain-and-npm.html
每次尝试安装时我仍然收到错误消息。请指教。
如果您使用公司代理(例如使用 Blue Coat),则应使用 http 而不是 https 作为存储库地址,例如
npm config set registry="http://registry.npmjs.org/"
请参阅:错误:SSL 错误:使用 npm 时的 SELF_SIGNED_CERT_IN_CHAIN。
您还可以将失败的自证书导入系统并标记为受信任,或在安装软件包时临时禁用 SSL 验证(快速但不推荐的方法):
npm config set strict-ssl false
请参阅:错误:SSL 错误:使用 npm 时的 SELF_SIGNED_CERT_IN_CHAIN。
推荐的方法(更痛苦)只是指向正确的证书文件,例如
npm config set cafile "<path to your certificate file>"
这对我有用:
$ export NODE_TLS_REJECT_UNAUTHORIZED=0
$ npm install
我知道这个问题几年前就已经发布了。由于它仍然出现在 Google 的顶部结果中,我想分享我针对此问题的正确且安全的解决方案。
我建议大家确保使用 https 注册表来保证连接的安全。另外,停止禁用 strict-ssl。许多人都忽略了这一点,并寻求快速修复而不是正确的解决方案。
您必须将
.pem
证书添加到 .npmrc
文件(npm 配置)中。当您只需要添加一个证书时,请使用以下内容:
npm config set cafile /path/to/cert.pem
当您的公司使用多个证书(如我的)时,您首先需要通过在终端中输入以下命令将证书合并为一个
.pem
:
cat cert1.pem cert2.pem > cert_combined.pem
然后确保在您的
.pem
中指向正确的
.npmrc
文件
npm config set cafile /path/to/cert_combined.pem
忘记其他人提到的解决方案,例如
ca[]="..."
和NODE_EXTRA_CA_CERTS
。该解决方案在使用节点 v16.13.0 和 npm v8.3.0 的多个权威根证书的公司内进行了测试和验证。
使用下面的命令,它可以正常工作:
npm 配置集注册表=“http://registry.npmjs.org/”