我在一家对内部用户使用防火墙的公司工作。
当我尝试安装npm
库时收到此错误消息
C:\Users\me\source\repos\webpage [(1_0_0)]> npm install -g puppeteer
npm ERR! code 1
npm ERR! path C:\Users\me\AppData\Roaming\npm\node_modules\puppeteer
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node install.js
npm ERR! ERROR: Failed to set up Chrome r114.0.5735.133! Set "PUPPETEER_SKIP_DOWNLOAD" env variable to skip download.
npm ERR! Error: unable to get local issuer certificate
npm ERR! at TLSSocket.onConnectSecure (node:_tls_wrap:1530:34)
npm ERR! at TLSSocket.emit (node:events:390:28)
npm ERR! at TLSSocket._finishInit (node:_tls_wrap:944:8)
npm ERR! at TLSWrap.ssl.onhandshakedone (node:_tls_wrap:725:12) {
npm ERR! code: 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY'
npm ERR! }
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\me\AppData\Local\npm-cache\_logs\2023-06-16T14_37_01_393Z-debug.log
但如果我通过浏览器导航到https://registry.npmjs.org/我可以看到该证书是有效的,并且已经得到了我公司的批准。
返回的错误是npm install
由公司的防火墙引起的吗?还是完全不相关的问题?
答案1
一种可能的解释是,您的公司解密了某些流量并使用他们的证书(您可能已经在钥匙串或受信任的根证书中拥有该证书)对其进行重新加密。
文章中的一些解决方法 修复 Node JS 中的 Unable_to_get_issuer_cert_locally 错误:
暂时停止严格的 SSL 验证
npm config set strict-ssl false
将默认公共注册表版本更改为 HTTP
npm config set registry http://registry.npmjs.org/
使用公司的根证书扩展 Node.js 信任存储
set NODE_EXTRA_CA_CERTS=C:\\path\\to\\certificate.pem
修改 CAfile 的设置,使其优先于 NPM 使用的标准 CA 查找
npm config set cafile /path/to/root/certificate.pem
完全禁用证书验证
export NODE_TLS_REJECT_UNAUTHORIZED=0
更多信息请参阅帖子
npm ERR!代码 UNABLE_TO_GET_ISSUER_CERT_LOCALLY。