我一直在尝试使用以下命令在具有公司代理的服务器上安装Yeoman和Gulp:
npm install -g yo gulp
但是,当我运行此命令(或任何“ npm install”命令)时,却遇到了问题:
npm ERR! E418
npm ERR! 418 I'm a teapot: gulp@latest
我非常有信心这是与代理有关的问题,但是我无法弄清楚到底是什么原因造成的。
我已经做过一些测试:
我已将具有登录信息的代理添加到我的npmrc文件中,以进行身份验证,我相信已正确输入了代理。如果我更改了用户名或密码的任何部分,我的错误都将更改为E407(身份验证失败)。
我运行了“ npm config set strict-ssl false”,这似乎什么也没做。
我尝试运行不同的安装程序,但仍然得到“ 418我是茶壶程序包 @latest”。
答案 0 :(得分:22)
因此,在浏览了论坛和博客几个小时之后,解决方案是将我的注册表从“ http://registry.npmjs.org/”更改为“ https://registry.npmjs.org/”。
显然,在使用某些代理服务器时,注册表将重定向到该地址,但是如果尝试不使用https进行连接,则将端口443添加到该地址。
希望这可以帮助遇到此问题的其他人!
答案 1 :(得分:12)
我的项目中也出现此错误,主要原因是代理设置发生了变化。因此,我建议您检查您的代理设置...我用来解决此错误的一些命令...
npm set strict-ssl false
npm config set registry https://registry.npmjs.org/
check = https://registry.npmjs.org/
答案 2 :(得分:4)
感谢您现在回答我的npm,不显示 Err 418我又是一个茶壶。
您必须像这样更新npm配置:
npm set strict-ssl false
npm config set registry https://registry.npmjs.org/
使用npm..
答案 3 :(得分:0)
Npm小组针对以下问题发送了此声明:“在高峰时,418个响应占通信量的0.01%。npm拥有大量用户(超过1000万),因此在事件发生期间给定的通信量介于实际影响到500和1000个用户。很明显,即使一个用户被bug咬伤也比我们想要的要多,但是相对于我们的规模,这并不是主要问题,触发该bug所需的特定代理配置相对很少,因此即使在代理用户之后,大多数人也没有受到影响。一旦我们在标头解析中收到有关该错误的警报,运维团队便迅速部署了此修复程序。”
因此,当我面临相同的问题时,代理人背后的人员肯定会受到影响。因此,这里的解决方案是-
检查代理-npm获取代理,npm获取https-proxy 如果两者都设置为无,请将其设置为-
npm设置代理http://proxyAddr:8000 npm设置https-proxy https://proxyAddr:8000
然后重试。
如果问题仍然存在,请检查注册表中的npm-
npm获取注册表 如果是http://registry.npmjs.org/,
将其更改为npm config set注册表https://registry.npmjs.org/(对于我来说,这应该可以解决问题)。
答案 4 :(得分:0)
当您在公司防火墙后面时,会遇到此问题,要解决此问题,我已按照以下步骤操作:
npm set strict-ssl false npm config set注册表https://registry.npmjs.org/
如果您落后于公司代理,则也可以使用以下命令: npm config设置https-proxy http://IP:PORT/
或者直接转到您的.npmrc文件并指向https而不是http。
答案 5 :(得分:0)
使用以下命令将注册表从http://registry.npmjs.org/
更改为https://registry.npmjs.org/
:
npm config set registry https://registry.npmjs.org/
答案 6 :(得分:0)
在访问了许多站点并测试了我发现的所有内容之后, 这个解决方案终于对我有用。如果您使用的是Windows,
.npmrc
,然后使用您喜欢的编辑器打开此文件。注意:如果您还有任何代理问题,也可以在同一文件中设置如下所示的代理。就我而言,我的密码中有一个特殊符号“ @” 。 当我尝试使用 npm config set proxy 命令更改代理时,这些特殊字符已转换为其他字符:)因此,如果直接在此文件中设置代理,则可以消除所有这些麻烦。
您的最终.npmrc
应该如下所示。如果代理没有任何问题,并且不要忘记将下面示例中的端口替换为代理端口,则可以删除代理行。
registry=https://registry.npmjs.org/
proxy=http://username:password@yourproxy.net:8080/
https-proxy=http://username:password@yourproxy.net:8080/
strict-ssl=false