我正在尝试所有可能的方法来创建一个React应用程序。我尝试过Maven,现在我正在尝试从Facebook孵化器创建-反应-应用程序。
当我尝试在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>
可能发生的情况是,您的公司解密某些流量,并使用他们的证书重新加密它(您可能已经在您的密钥链或受信任的根证书中拥有该证书)
如果你使用node 7或更高版本,我发现这个修复与node和node-gyp兼容(对于Windows你需要做的不同,但你基本上只需要添加这个环境变量):
出口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使用检查,但也允许这个证书遇到它
理想情况下,您可以使用系统的受信任证书,但不幸的是,情况并非如此。
将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的末尾
这为我解决了问题。