错误!代码 UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY
我正在尝试所有创建 React 应用程序的方法。我尝试过使用 maven,现在我正在尝试使用来自 Facebook Incubators 的 crate-react-app 构建系统。
当我尝试在 npm 环境中 运行 命令 create-react-app my-app
时,它在我的个人系统上运行没有任何问题。但是当我在我的工作环境中尝试相同的命令时,我在命令提示符下遇到了这个错误
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>
互联网搜索的一个快速解决方案是 npm config set strict-ssl false
,幸运的是它有效。但作为我工作环境的一部分,我只能将 strict-ssl 标志设置为 false。
后来我找到了一个安全有效的解决方案,
npm config set registry http://registry.npmjs.org/
这非常有效,我收到了一条成功消息 Happy Hacking!
,因为我没有将 strict-ssl 标志设置为 false。
将 NPM 存储库 URL 更改为 HTTP 可以快速修复,但我想使用 HTTPS。
就我而言,我雇主 (ZScaler) 的代理导致了问题(因为它充当 MITM,导致认证验证问题)
我忘记了 found a script that helps with this and Git (for cloning GitHub repos via HTTPS had the same issue) and forked it for my use
基本上,它为 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
的末尾
这解决了我的问题。
可能发生的情况是您的公司解密某些流量并re-encrypts使用他们的证书(您可能已经在钥匙串或受信任的根证书中)
如果您使用的是 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#node_extra_ca_certsfile
确保您的证书采用正确的 pem 格式(您需要真正的换行符而不是文字 \n
)
我似乎无法使用相对路径(.
或 ~
)
此修复基本上告诉 npm 和 node-gyp 使用常规 CA 的检查,但在遇到此证书时也允许它
理想情况下,您可以使用系统的可信证书,但不幸的是,情况并非如此。
有同样的错误。看起来它与 SSL 证书有关。如果您将 NPM 用于 public 包(不需要 HTTPS 的安全性),您可以使用以下命令关闭严格的 SSL 密钥验证。
如果您只想一次性安装几个 public 可用的软件包,这可能是最简单的解决方法。
npm config set strict-ssl=false
我在尝试更新 npm 时遇到此错误,但在 AWS Linux 中从 yum 安装了一个非常旧的版本(1.3.6!)。我能够手动安装更新的 npm 版本并且一切都已修复。
在尝试了我能找到的所有解决方案后:
- 关闭严格 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
现在看来最适合我的解决方案是使用扩展现有 CA 的 NODE_EXTRA_CA_CERTS 环境变量,而不是用 .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 设置。
就我而言,有时我将我的全局配置设置为使用专为项目设计的证书。
npm config list
/path/to/global/.npmrc
NODE_EXTRA_CA_CERTS = "./certs/chain.pem"
我打开了文件,删除了该行,然后npm install
又开始工作了。
对我来说问题是 VPN,我断开了 VPN 并且“npm i”命令没有失败。
npm config set registry http://registry.npmjs.org/
如果此代码技巧对您不起作用,那么尝试从主目录运行您的应用程序。。它对我有用。
你的 OS 是什么?在 Ubuntu 我能够通过 运行
修复这个错误
npm config set cafile /etc/ssl/certs/ca-certificates.crt
告诉 npm 使用我系统的证书存储。 Debian 使用相同的系统证书路径,我对其他发行版和 OSes.
不太熟悉
(我不喜欢其他所有关闭证书验证并允许中间人攻击的答案。)
很容易解决这个问题。
错误
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! errno UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! request to https://registry.npmjs.org/yarn failed, reason: unable to get local issuer certificate
npm ERR! A complete log of this run can be found in:
解决方案
如果您在组织或内部网中,请使用以下推荐。
npm config set registry
https://type_your_org_repo_fqdn
其他
npm 配置设置注册表 http://registry.npmjs.org/
一些原理图在引擎盖下使用纱线并抛出相同的错误。
yarn config set registry http://registry.npmjs.org
Zscalar 更新策略 帮助我进行网络调用,在尝试了上述的一些解决方法之后。
在 Zscalar 更新之前尝试过的解决方法:
- npm 配置设置 strict-ssl 错误
- npm 配置设置注册表 http://registry.npmjs.org/
- 设置NODE_TLS_REJECT_UNAUTHORIZED=0
Zscalar 应用程序中的更新政策(以黄色突出显示)帮助我解决了“无法获取本地颁发者证书”的问题。
这对我有用(在 Mac 10.15.7 上)。
我的问题是我试过这个命令...
npm install eslint --save-dev
...并收到此错误消息...
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! errno UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! request to https://registry.npmjs.org/eslint failed, reason: unable to get local issuer certificate
...我用谷歌搜索了一条错误消息,最后找到了您正在阅读的堆栈溢出问题。
然后我尝试了上面的建议之一,即
npm config set registry http://registry.npmjs.org/
...然后,我又试了...
npm install eslint --save-dev
...并收到相同的错误消息。
然后我做了一些独特的事情。我连接到我公司的 vpn。(这与某人(即@mask)建议的相反。他们说他们关闭了他们的 vpn!)
我试过了...
npm install eslint --save-dev
...第三次,效果非常好。问题解决了。 (-:
(旁白:我想知道我是否第一次尝试解决这个问题,即
npm config set registry http://registry.npmjs.org/
...有必要吗?)
执行以下步骤为我解决了问题。
npm config set strict-ssl=false
npm config set registry http://registry.npmjs.org/
npm config set cafile /path/to/your/cert.pem
set NODE_TLS_REJECT_UNAUTHORIZED=0
我正在尝试所有创建 React 应用程序的方法。我尝试过使用 maven,现在我正在尝试使用来自 Facebook Incubators 的 crate-react-app 构建系统。
当我尝试在 npm 环境中 运行 命令 create-react-app my-app
时,它在我的个人系统上运行没有任何问题。但是当我在我的工作环境中尝试相同的命令时,我在命令提示符下遇到了这个错误
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>
互联网搜索的一个快速解决方案是 npm config set strict-ssl false
,幸运的是它有效。但作为我工作环境的一部分,我只能将 strict-ssl 标志设置为 false。
后来我找到了一个安全有效的解决方案,
npm config set registry http://registry.npmjs.org/
这非常有效,我收到了一条成功消息 Happy Hacking!
,因为我没有将 strict-ssl 标志设置为 false。
将 NPM 存储库 URL 更改为 HTTP 可以快速修复,但我想使用 HTTPS。
就我而言,我雇主 (ZScaler) 的代理导致了问题(因为它充当 MITM,导致认证验证问题)
我忘记了 found a script that helps with this and Git (for cloning GitHub repos via HTTPS had the same issue) and forked it for my use
基本上,它为 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
这解决了我的问题。
可能发生的情况是您的公司解密某些流量并re-encrypts使用他们的证书(您可能已经在钥匙串或受信任的根证书中)
如果您使用的是 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#node_extra_ca_certsfile
确保您的证书采用正确的 pem 格式(您需要真正的换行符而不是文字 \n
)
我似乎无法使用相对路径(.
或 ~
)
此修复基本上告诉 npm 和 node-gyp 使用常规 CA 的检查,但在遇到此证书时也允许它
理想情况下,您可以使用系统的可信证书,但不幸的是,情况并非如此。
有同样的错误。看起来它与 SSL 证书有关。如果您将 NPM 用于 public 包(不需要 HTTPS 的安全性),您可以使用以下命令关闭严格的 SSL 密钥验证。
如果您只想一次性安装几个 public 可用的软件包,这可能是最简单的解决方法。
npm config set strict-ssl=false
我在尝试更新 npm 时遇到此错误,但在 AWS Linux 中从 yum 安装了一个非常旧的版本(1.3.6!)。我能够手动安装更新的 npm 版本并且一切都已修复。
在尝试了我能找到的所有解决方案后:
- 关闭严格 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
现在看来最适合我的解决方案是使用扩展现有 CA 的 NODE_EXTRA_CA_CERTS 环境变量,而不是用 .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 设置。
就我而言,有时我将我的全局配置设置为使用专为项目设计的证书。
npm config list
/path/to/global/.npmrc
NODE_EXTRA_CA_CERTS = "./certs/chain.pem"
我打开了文件,删除了该行,然后npm install
又开始工作了。
对我来说问题是 VPN,我断开了 VPN 并且“npm i”命令没有失败。
npm config set registry http://registry.npmjs.org/
如果此代码技巧对您不起作用,那么尝试从主目录运行您的应用程序。。它对我有用。
你的 OS 是什么?在 Ubuntu 我能够通过 运行
修复这个错误npm config set cafile /etc/ssl/certs/ca-certificates.crt
告诉 npm 使用我系统的证书存储。 Debian 使用相同的系统证书路径,我对其他发行版和 OSes.
不太熟悉(我不喜欢其他所有关闭证书验证并允许中间人攻击的答案。)
很容易解决这个问题。
错误
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! errno UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! request to https://registry.npmjs.org/yarn failed, reason: unable to get local issuer certificate
npm ERR! A complete log of this run can be found in:
解决方案
如果您在组织或内部网中,请使用以下推荐。
npm config set registry https://type_your_org_repo_fqdn
其他
npm 配置设置注册表 http://registry.npmjs.org/
一些原理图在引擎盖下使用纱线并抛出相同的错误。
yarn config set registry http://registry.npmjs.org
Zscalar 更新策略 帮助我进行网络调用,在尝试了上述的一些解决方法之后。
在 Zscalar 更新之前尝试过的解决方法:
- npm 配置设置 strict-ssl 错误
- npm 配置设置注册表 http://registry.npmjs.org/
- 设置NODE_TLS_REJECT_UNAUTHORIZED=0
Zscalar 应用程序中的更新政策(以黄色突出显示)帮助我解决了“无法获取本地颁发者证书”的问题。
这对我有用(在 Mac 10.15.7 上)。
我的问题是我试过这个命令...
npm install eslint --save-dev
...并收到此错误消息...
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! errno UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! request to https://registry.npmjs.org/eslint failed, reason: unable to get local issuer certificate
...我用谷歌搜索了一条错误消息,最后找到了您正在阅读的堆栈溢出问题。
然后我尝试了上面的建议之一,即
npm config set registry http://registry.npmjs.org/
...然后,我又试了...
npm install eslint --save-dev
...并收到相同的错误消息。
然后我做了一些独特的事情。我连接到我公司的 vpn。(这与某人(即@mask)建议的相反。他们说他们关闭了他们的 vpn!)
我试过了...
npm install eslint --save-dev
...第三次,效果非常好。问题解决了。 (-:
(旁白:我想知道我是否第一次尝试解决这个问题,即
npm config set registry http://registry.npmjs.org/
...有必要吗?)
执行以下步骤为我解决了问题。
npm config set strict-ssl=false
npm config set registry http://registry.npmjs.org/
npm config set cafile /path/to/your/cert.pem
set NODE_TLS_REJECT_UNAUTHORIZED=0