如何解决在尝试使用npm安装时出现的NPM“418 I'm a teapot”错误?

mbskvtky  于 2022-12-27  发布在  其他
关注(0)|答案(7)|浏览(227)

我一直在尝试使用以下命令在具有公司代理的服务器上安装Yeoman和Gulp:

npm install -g yo gulp

然而,当我运行这个命令(或任何“npm安装”命令)时,我会遇到:

npm ERR!       E418
npm ERR! 418 I'm a teapot: gulp@latest

我很有信心,这是一个问题有关的代理,但我不能找出究竟是什么原因。
我做过一些测试:

  • 我将代理服务器添加到我的npmrc文件中,并提供了登录信息以进行身份验证,我相信它输入正确。如果我更改用户名或密码的任何部分,错误将变为E407(身份验证失败)。
  • 我运行了“npm config set strict-ssl false”,但似乎什么也没做。
  • 我尝试运行不同的安装,我仍然只是得到“418我是一个茶壶 * 包 *@最新”。
qyzbxkaa

qyzbxkaa1#

因此,在论坛和博客中又挖掘了几个小时后,解决方案是将我的注册表从“X1 E0 F1 X“改为“X1 E1 F1 X“。
显然,当在一些代理上时,注册表将重定向到该地址,但如果试图在没有https的情况下连接,则将端口443添加到该地址。
希望这对其他遇到这个问题的人有帮助!

tvokkenx

tvokkenx2#

我也得到了这个错误在我的项目和主要原因是改变我们的代理设置。所以我想建议检查您的代理设置...一些命令,我用来解决这个错误...

npm set strict-ssl false 
npm config set registry https://registry.npmjs.org/

检查= https://registry.npmjs.org/

wswtfjt7

wswtfjt73#

谢谢你现在回答我的npm没有显示错误418我又是一个茶壶

必须按如下方式更新npm配置:

npm set strict-ssl false 
npm config set registry https://registry.npmjs.org/

使用npm..重试安装包

6uxekuva

6uxekuva4#

在访问了许多网站并测试了我发现的一切之后,这个解决方案终于为我工作了。如果你使用的是Windows,
1.点击windows按钮并键入“运行”
1.键入.npmrc并使用您喜欢的编辑器打开此文件。
1.将注册表= http://registry.npmjs.org/替换为注册表= https://registry.npmjs.org/并保存。

注意:如果您有任何代理问题太..您可以设置您的代理像下面在同一个文件中。在我的情况下,我有一个特殊符号“@"在我的密码。当我尝试改变代理使用npm配置设置代理命令这些特殊字符被转换为其他东西:)所以你可以消除所有这些头痛,如果你设置你的代理在这个文件中直接。

你的最终.npmrc应该看起来像下面。你可以删除代理线路,如果你没有任何问题的代理,不要忘记取代端口在下面的例子与您的代理端口。

registry=https://registry.npmjs.org/  
proxy=http://username:password@yourproxy.net:8080/  
https-proxy=http://username:password@yourproxy.net:8080/  
strict-ssl=false
2admgd59

2admgd595#

使用以下命令将注册表从http://registry.npmjs.org/更改为https://registry.npmjs.org/
npm config set registry https://registry.npmjs.org/

nwwlzxa7

nwwlzxa76#

NPM团队针对该问题发送了以下声明-“在高峰期,418个响应占流量的0.01%。NPM拥有大量用户(超过10 M),所以在事件发生的时间内,有500到1000个实际用户受到影响。显然,即使一个用户被bug咬了,也比我们希望的要多,但相对于我们的规模而言,这并不是一个大问题。触发漏洞所需的特定代理配置相对较少,因此即使在使用代理的用户中,大多数人也没有受到影响。一旦我们收到报头解析中的漏洞警报,运营团队迅速部署了修复程序。”
所以,代理背后的人肯定会受到影响,因为我面临着同样的问题。所以,解决办法是-
检查代理- npm get proxy和npm get https-proxy如果两者都设置为none,请将其设置为-
npm设置代理http://proxyAddr:8000 npm设置https代理https://proxyAddr:8000
然后重试。
如果问题仍然存在,请检查注册表中的npm-
如果http://registry.npmjs.org/则NPM获得注册表,
将其更改为npm配置集注册表https://registry.npmjs.org/(这应该可以解决问题,对我来说,它起作用了)。

axr492tv

axr492tv7#

当你在公司防火墙后面时,你会遇到这个问题,为了解决这个问题,我遵循了以下步骤:

npm set strict-ssl false 
npm config set registry https://registry.npmjs.org/

如果您使用公司代理,则还可以使用以下命令:第一个月
或者直接转到.npmrc文件并指向https而不是http。

相关问题