【问题标题】:How do I solve the NPM "418 I'm a teapot" error when trying to use npm install?尝试使用 npm install 时如何解决 NPM “418 I'm a teapot” 错误?
【发布时间】:2019-01-02 14:57:11
【问题描述】:

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

【问题讨论】:

    标签: node.js npm proxy


    【解决方案1】:

    因此,在浏览论坛和博客几个小时后,解决方案是将我的注册表从“http://registry.npmjs.org/”更改为“https://registry.npmjs.org/”。

    显然,在某些代理上,注册表将重定向到该地址,但如果尝试在没有 https 的情况下进行连接,则将端口 443 添加到该地址。

    希望这可以帮助其他遇到此问题的人!

    【讨论】:

    • 好的,谢谢!那也是我的问题。我有一个旧的 .npmrc 指向 http 而不是 https。
    • 感谢您恢复我的理智
    • 优秀。你拯救了我的一天!
    【解决方案2】:

    我的项目中也出现了这个错误,主要原因是我们的代理设置发生了变化。所以我想建议检查你的代理设置......我用来解决这个错误的几个命令......

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

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

    【讨论】:

      【解决方案3】:

      感谢您现在回答我的 npm 没有显示 Err 418 我又是茶壶了

      您必须像这样更新 npm 配置:

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

      使用npm..再次尝试安装包

      【讨论】:

        【解决方案4】:

        在访问了许多网站并测试了我发现的所有内容后, 这个解决方案终于对我有用。如果您使用的是 Windows,

        1. 点击windows按钮并输入“运行”
        2. 输入 .npmrc 并使用您喜欢的编辑器打开此文件。
        3. 将 registry=http://registry.npmjs.org/ 替换为 registry=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
        

        【讨论】:

          【解决方案5】:

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

          npm config set registry https://registry.npmjs.org/

          【讨论】:

            【解决方案6】:

            Npm 团队针对该问题发送了此声明-“在高峰期,418 条响应占流量的 0.01%。npm 拥有大量用户(超过 1000 万),因此考虑到事件发生期间的流量介于500 和 1000 个实际用户受到影响。显然,即使是一个用户被 bug 咬伤的次数也比我们想要的要多,但相对于我们的规模来说,这并不是什么大问题。触发 bug 所需的特定代理配置相对较少,所以即使在代理背后的用户中,大多数人也没有受到影响。一旦我们收到标头解析中的错误警报,运维团队就迅速部署了修复程序。”

            所以,当我面临同样的问题时,代理背后的人肯定会受到影响。所以,这里的解决方案是-

            检查代理- npm get proxy 和 npm get https-proxy 如果两者都设置为none,请将其设置为-

            npm 设置代理http://proxyAddr:8000 npm 设置 https-proxy https://proxyAddr:8000

            然后再试一次。

            如果问题仍然存在,请检查注册表中的 npm-

            npm 获取注册表 如果http://registry.npmjs.org/ 那么,

            将其更改为 npm config set registry https://registry.npmjs.org/(这应该可以解决问题,对我来说它有效)。

            【讨论】:

              【解决方案7】:

              当您在企业防火墙之后遇到此问题时,为了解决此问题,我已按照以下步骤操作:

              npm set strict-ssl false npm config 设置注册表https://registry.npmjs.org/

              如果您使用公司代理,那么您也可以使用以下命令: npm 配置设置 https-proxy http://IP:PORT/

              或者直接进入你的 .npmrc 文件并指向 https 而不是 http。

              【讨论】:

                猜你喜欢
                • 2020-10-21
                • 1970-01-01
                • 2023-03-13
                • 1970-01-01
                • 2015-09-27
                • 1970-01-01
                • 1970-01-01
                • 2019-02-27
                • 2019-09-30
                相关资源
                最近更新 更多