尝试使用npm install时,如何解决NPM“ 418我是茶壶”错误?

时间:2018-07-25 17:41:50

标签: node.js npm proxy

我一直在尝试使用以下命令在具有公司代理的服务器上安装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”。

7 个答案:

答案 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,

  1. 单击Windows按钮并输入“运行”
  2. 键入.npmrc,然后使用您喜欢的编辑器打开此文件。
  3. 将注册表= {http://registry.npmjs.org/替换为注册表= https://registry.npmjs.org/并保存。

注意:如果您还有任何代理问题,也可以在同一文件中设置如下所示的代理。就我而言,我的密码中有一个特殊符号“ @” 。 当我尝试使用 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