npm 错误!代码 UNABLE_TO_GET_ISSUER_CERT_LOCALLY

IT技术 node.js reactjs npm create-react-app
2021-04-17 05:40:02

我正在尝试创建react应用程序的所有方法。我已经尝试过 maven,现在我正在尝试使用来自 Facebook 孵化器的 crate-react-app 构建系统。

当我尝试create-react-app my-app在 npm 环境中运行该命令时,它在我的个人系统上运行没有问题。但是当我在我的工作环境中尝试相同的命令时,我在命令提示符下遇到了这个错误

npm ERR! node v6.10.2
npm ERR! npm  v3.10.10
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

npm ERR! unable to get local issuer certificate
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>
6个回答

互联网搜索的一个快速解决方案是npm config set strict-ssl false,幸运的是它奏效了。但作为我工作环境的一部分,我只能将 strict-ssl 标志设置为 false。

后来我找到了一个安全有效的解决方案,

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

这工作得很好,我Happy Hacking!通过不将 strict-ssl 标志设置为 false得到了成功消息

对我来说,除了设置npm config set strict-ssl false不起作用之外别无他法我觉得这是值得的node.jsnpm团队应该考虑和文件有适当的解决办法,如果它是不是可以解决他们。
2021-05-28 05:40:02
我遇到了这篇文章中显示的相同错误,所以我跑了npm config set strict-ssl falsenpm config set registry http://registry.npmjs.org/ 但我在运行sudo npm install aws-sdk仍然遇到错误,但是当我放下sudo零件并运行npm install aws-sdk它时,它起作用了。
2021-05-29 05:40:02
由于这是一个不安全的未加密通道,您的工作场所不会仅通过 HTTP 拉取库,因此被否决。更好的方法是 Jordan 的答案,它允许您定义包含公司证书的信任库,这意味着您可以通过加密通道安全地提取库。
2021-05-30 05:40:02
对我来说,我这样做了,但是sudo当我跑步时我也无法使用npm install aws-sdk跑步sudo npm install aws-sdk对我造成了这个错误。
2021-06-12 05:40:02
我也是,只是恢复使用 NPM 存储库的 HTTP 版本(而不是registry.npmjs.org),因为我的工作代理导致了问题(因为它充当 MITM,导致认证验证问题)有一天我会想解决了证书问题,但我只需要下载一个包,该死!
2021-06-18 05:40:02

可能发生的情况是您的公司解密某些流量并使用他们的证书(您可能已经在您的钥匙串或受信任的根证书中)重新加密它

如果您使用的是 node 7 或更高版本,我发现此修复程序与 node 和 node-gyp 兼容(对于 Windows,您需要以不同的方式执行此操作,但您基本上只需要添加此环境变量):

export NODE_EXTRA_CA_CERTS="absolute_path_to_your_certificates.pem" (在 Windows 中,您可能需要删除引号)

pem 文件可以有多个证书:https : //nodejs.org/api/cli.html#cli_node_extra_ca_certs_file

确保您的证书采用正确的 pem 格式(您需要真正的换行符而不是文字\n

我似乎无法让它与相对路径(.~一起工作

此修复基本上告诉 npm 和 node-gyp 使用针对常规 CA 的检查,但也允许在遇到此证书时

理想情况下,您将能够使用系统的可信证书,但不幸的是,情况并非如此。

我在哪里可以找到 Windows 中的 .pem 文件。我在整个硬盘中搜索了 pem 文件,在 Windows\System32 中发现了几个级别。但它不起作用
2021-05-26 05:40:02
该链接指向页面的错误部分,请使用以下链接:nodejs.org/api/cli.html#node_extra_ca_certsfile
2021-06-15 05:40:02
完美……我们有一个 zscaler 代理。我下载了公共 der 证书,转换为 base64 编码的 crt 并在 dockerfile 中添加了 RUN export NODE_EXTRA_CA_CERTS="<path to cert">
2021-06-17 05:40:02

将 NPM 存储库 URL 更改为 HTTP 是一种快速修复,但我想使用 HTTPS。

就我而言,我雇主 (ZScaler) 的代理造成了问题(因为它充当 MITM,导致认证验证问题)

我忘了我找到了一个有助于解决这个问题的脚本,而 Git(通过 HTTPS 克隆 GitHub 存储库也有同样的问题)并将其分叉以供我使用

基本上,它对 git 执行以下操作:

git config --global http.proxy http://gateway.zscaler.net:80/
git config --system http.proxy http://gateway.zscaler.net:80/

对于 Node,它添加proxy=http://gateway.zscaler.net:80/到末尾c:\Users\$USERNAME\npm\.npmrc

那为我解决了这个问题。

您可能想要检查您的公司配置在哪个 ZS 云中。基本上,检查ip.zscaler.com云名称并将其设置在 URL 中。例如:如果它说zscalertwo.net然后替换为以下 URL:gateway.zscalertwo.net
2021-05-26 05:40:02

在尝试了我能找到的所有解决方案后:

  • 关闭严格的 ssl: npm config set strict-ssl=false
  • 将注册表更改为 http 而不是 https: npm config set registry http://registry.npmjs.org/
  • 更改我的 cafile 设置: npm config set cafile /path/to/your/cert.pem
  • 停止拒绝未知 CA: set NODE_TLS_REJECT_UNAUTHORIZED=0

现在似乎对我来说效果最好的解决方案是使用NODE_EXTRA_CA_CERTS环境变量来扩展现有的 CA,而不是用 .npmrc 文件中的 cafile 选项替换它们。您可以通过在终端中输入以下内容来设置它:NODE_EXTRA_CA_CERTS=path/to/your/cert.pem

当然,每次都设置这个变量会很烦人,所以我将它添加到我的 bash 配置文件中,以便每次打开终端时都会设置它。如果您还没有~/.bash_profile文件,请创建一个。然后在该文件的末尾添加export NODE_EXTRA_CA_CERTS=path/to/your/cert.pem. 然后,删除 .npmrc 中的 cafile 设置。

在 zscaler 的情况下,第四个选项 ( set NODE_TLS_REJECT_UNAUTHORIZED=0) 确实对我有帮助。我在 Electron 的背景下遇到了这个问题。还有一个问题是电子构建 URL 是一个似乎被阻止或无法工作的 git 存储库。那需要修复。
2021-05-22 05:40:02
使用 Zscaler,set NODE_TLS_REJECT_UNAUTHORIZED=0可以帮助我。
2021-06-01 05:40:02
我已经尝试了上面提供的所有答案,除了 set NODE_TLS_REJECT_UNAUTHORIZED=0
2021-06-05 05:40:02
第四个选项是一个魅力; process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;
2021-06-15 05:40:02

有同样的错误。看起来它与 SSL 证书有关。如果您将 NPM 用于公共包(不需要 HTTPS 的安全性),您可以使用以下命令关闭严格的 SSL 密钥验证。

如果您只想一次性安装一些公开可用的软件包,这可能是最简单的修复方法。

npm config set strict-ssl=false
@AlexKeySmith 你是对的。然而,几率非常低。对于某些人来说,这可能是唯一的选择。买者自负
2021-05-22 05:40:02
这样做存在固有的风险,如果您是恶意中间人攻击的受害者,则在您下载软件包时可能会修改该软件包。
2021-05-26 05:40:02