我正在尝试创建 react 应用程序的所有方法。我尝试过使用 maven,现在我正在尝试使用 Facebook 孵化器提供的 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/
通过不将 strict-ssl 标记设置为 false,我得到了一条成功消息 "Happy Hacking!"。
可能发生的情况是,贵公司解密了某些流量,然后用他们的证书重新加密(您的钥匙串或可信根证书中可能已经有了这些证书)。
如果您使用的是 node 7 或更高版本,我发现此修复与 node 和 node-gyp 兼容(对于 Windows,您需要采用不同的方法,但基本上只需添加此环境变量即可):
export NODE_EXTRA_CA_CERTS="absolute_path_to_your_certificates.pem"``
pem 文件可以有多个证书: https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file
确保您的证书是正确的 pem 格式(您需要真正的换行符,而不是字面上的 \n
)
我似乎无法使用相对路径(.
或 ~
)
这个修正基本上是告诉 npm 和 node-gyp 使用常规 CA 的检查,但也会在遇到该证书时允许使用它
理想情况下,你可以使用系统信任的证书,但不幸的是,情况并非如此。
将 NPM repo URL 更改为 HTTP 可以快速解决问题,但我想使用 HTTPS。
在我的案例中,我雇主的代理(ZScaler)造成了问题(因为它充当了 MITM 的角色,导致认证验证问题)
我忘了我发现了一个脚本可以帮助解决这个问题,Git(通过 HTTPS 克隆 GitHub 仓库时也有同样的问题)和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
的末尾。
这样我的问题就解决了。