我是nodejs和npm的新手。我正在尝试安装log4js,这是安装命令:
npm install log4js
我是从Windows命令行运行的,经过一段时间的标记旋转我得到以下错误:
npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "log4js"
npm ERR! node v0.12.0
npm ERR! npm v2.5.1
npm ERR! code SELF_SIGNED_CERT_IN_CHAIN
npm ERR! self signed certificate in certificate chain
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <http://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! C:\srv\npm-debug.log
我尝试像http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more那样建议{{3}},但我仍然收到此错误。
如何解决此问题并安装NPM?
答案 0 :(得分:106)
使用以下命令禁用严格的ssl-mode,您将不会收到错误
npm set strict-ssl false
答案 1 :(得分:24)
我在Windows 10上遇到了同样的问题。
打开windows powerShell并输入以下命令:
npm config set registry http://registry.npmjs.org/
然后你可以使用:
npm install [your package]
答案 2 :(得分:12)
我也是npm的新手。除了链接中提到的命令,我尝试了以下内容并解决了我的问题:
答案 3 :(得分:5)
正如上述Akshay Vijay Jain所述,
npm config set strict-ssl false
TURNING OFF SSL BEFORE INSTALLING THE LATEST VERSION
然后安装最新版本
npm install -g npm @ latest
请参阅为清晰起见而添加的屏幕截图。
答案 4 :(得分:4)
通过 Docker 构建执行时遇到相同的错误。 但是,Powershell 执行没有错误。然后使用以下内容修改 dockerfile(如上所述):
运行 npm 配置集 ca=""
运行 npm set strict-ssl false
这修复了证书链问题。
答案 5 :(得分:2)
您是否还尝试过设置cafile
来容纳一个文件中的所有pems? npm add root CA
如果您在.npmrc
文件中使用代理,建议您将no_proxy
环境变量设置为<server IP address>
答案 6 :(得分:1)
在我的情况下,我安装了Fiddler,它有一个自签名证书,使得npm安装变得疯狂。
请在此处查看如何删除自签名的Fiddler证书How do you remove the root CA certificate that Fiddler installs
答案 7 :(得分:0)
虽然将StrictSsl设置为false是一个选项,但它会损害您的npm安全性。我建议不要禁用它。以下说明详细说明了Shreedhar的使用cafile的内容。尽管它是从Windows 10机器的角度编写的,但可以对其进行修改。
我们公司通过代理使用SSL Inpsection,因此至少我们需要包括SSL Inspection证书。以下说明假定您能够在尝试使用外部访问npm功能的计算机上使用现代Web浏览器。
npm config list
npm config set cafile "C:\Local\Path\To\cafile4npm.cer"
修改步骤8中记录的路径和文件。npm install
命令。答案 8 :(得分:0)
在CentOS和其他Linux发行版中,您需要配置NPM以使用您的证书颁发机构文件:
npm config set cafile "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" -g
显然检查文件是否存在,并包含您可能遇到的所有CA根目录(例如公司代理)。
答案 9 :(得分:0)
截止到2014年2月27日,npm no longer supports its self-signed certificates。 npm建议使用以下选项来执行以下操作之一:
升级您的npm版本
npm install npm -g --ca=""
-或-
告诉您当前的npm版本以使用已知的注册商
npm config set ca ""
更新:npm发布了More help with SELF_SIGNED_CERT_IN_CHAIN and npm,其中包含针对不同环境的更多解决方案
了解更多here
答案 10 :(得分:0)
以上所有答案均未解决我的情况。罪魁祸首是基于软件包代理程序的6.0.1之前的版本。确实,所有者承认在其包装的测试文件夹中寄出了自签名证书。这迫使重新安装-D和-g,但问题仍在发生。
我通过在node_modules文件夹中搜索* .pem找到了该证书。
仍在努力使npm缓存听我说话。我当然是假人吧?
我将回发其他发现。
找到解决方案
7/7/2020
今天,我们的Angular应用程序已从8.3升级到10.0。你猜怎么了?错误消失了。根本原因是有人发布了一个未签名的证书,这使得它在NPM模块库中显得太深了。甚至NPM 6.15都有它!
答案 11 :(得分:0)
我在这里尝试了许多解决方案,但没有一个真正对我有用。我尝试更新npm,但是超时(当注册表设置为http://registry.npmjs.org/时)或403禁止响应(当注册表设置为http s ://registry.npmjs.org时) /)
最后,意识到我的问题是由代理背后引起的, did 最后为我工作的是:
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
答案 12 :(得分:0)
您可以禁用TLS连接的证书验证:
NODE_TLS_REJECT_UNAUTHORIZED=0 npm install puppeteer
答案 13 :(得分:-1)
我重新安装了节点js和angular cli。它开始工作了!