【问题标题】:npm install fails (installing MERN stack)npm install 失败(安装 MERN 堆栈)
【发布时间】:2019-02-07 04:00:06
【问题描述】:

我正在尝试在我的 Mac 上安装 MERN 堆栈,但是当我运行以下命令时:

sudo npm install -g mern-cli

我收到此错误消息:

request to https://registry.npmjs.org/mern-cli failed, reason: Hostname/IP doesn't match certificate's altnames: "Host: registry.npmjs.org. is not in the cert's altnames: DNS:a.sni.fastly.net, DNS:a.sni.global-ssl.fastly.net"

我尝试了几件事,比如运行以下命令(解决了其他人的问题):

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

但是,这并不能解决问题。完全重新安装Node也没有解决问题。如何解决?

编辑:完整的调试日志

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node',
1 verbose cli   '/usr/local/bin/npm',
1 verbose cli   'install',
1 verbose cli   '-g',
1 verbose cli   'mern-cli' ]
2 info using npm@5.6.0
3 info using node@v8.11.4
4 verbose npm-session f5dd10c6d19e4605
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 silly fetchPackageMetaData error for mern-cli@latest request to https://registry.npmjs.org/mern-cli failed, reason: Hostname/IP doesn't match certificate's altnames: "Host: registry.npmjs.org. is not in the cert's altnames: DNS:a.sni.fastly.net, DNS:a.sni.global-ssl.fastly.net"
8 verbose type system
9 verbose stack FetchError: request to https://registry.npmjs.org/mern-cli failed, reason: Hostname/IP doesn't match certificate's altnames: "Host: registry.npmjs.org. is not in the cert's altnames: DNS:a.sni.fastly.net, DNS:a.sni.global-ssl.fastly.net"
9 verbose stack     at ClientRequest.req.on.err (/usr/local/lib/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/index.js:68:14)
9 verbose stack     at emitOne (events.js:116:13)
9 verbose stack     at ClientRequest.emit (events.js:211:7)
9 verbose stack     at TLSSocket.socketErrorListener (_http_client.js:387:9)
9 verbose stack     at emitOne (events.js:116:13)
9 verbose stack     at TLSSocket.emit (events.js:211:7)
9 verbose stack     at emitErrorNT (internal/streams/destroy.js:64:8)
9 verbose stack     at _combinedTickCallback (internal/process/next_tick.js:138:11)
9 verbose stack     at process._tickCallback (internal/process/next_tick.js:180:9)
10 verbose cwd /Users/Bjorn/Desktop/StoryOfAms
11 verbose Darwin 17.7.0
12 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "mern-cli"
13 verbose node v8.11.4
14 verbose npm  v5.6.0
15 error request to https://registry.npmjs.org/mern-cli failed, reason: Hostname/IP doesn't match certificate's altnames: "Host: registry.npmjs.org. is not in the cert's altnames: DNS:a.sni.fastly.net, DNS:a.sni.global-ssl.fastly.net"
16 verbose exit [ 1, true ]

【问题讨论】:

  • 你应该考虑在超级用户上问这个...
  • 已经做到了!抱歉,我会编辑帖子。
  • 好像是全局配置错误,见status.npmjs.org

标签: node.js npm terminal mern


【解决方案1】:

正如许多其他答案所指出的那样,这似乎是一个全球性问题,我也遇到了同样的问题。我确实按照https://status.npmjs.org/incidents/v22ffls5cd6h 提供的说明通过(如@muradm 和其他人的建议)解决了这个问题。

其中的说明是您使用 dig 命令或使用 google DNS 工具检查自己对 www.npmjs.com 的 IP 地址是什么。

结果是在我的 Hosts 文件中包含以下行:

104.16.109.30   registry.npmjs.org

这为我解决了这个问题。 请记住,这是一个临时修复,应在周末后删除! 祝你好运!

-- 编辑--

此外,这是假设您使用 registry.npmjs.org 作为 NPM 注册表端点(这是默认设置)。要检查这一点,您可以运行:

npm config get registry

例如,如果返回“https://registry.npmjs.com/”,您可以尝试添加到您的主机:

104.16.109.30   registry.npmjs.com

我刚刚测试过并且工作正常!

P.S.:如果由于任何原因您不确定如何编辑 hosts 文件,您可以在这里查看:https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/

【讨论】:

    【解决方案2】:

    除了@jcemoller 的回答,对我来说:

    然后它起作用了。

    上述配置应在问题完全解决后一天左右恢复。

    【讨论】:

      【解决方案3】:

      问题是全球性的。现在每个人可能都有同样的问题。

      Hostname/IP doesn't match certificate's altnames: "Host: registry.npmjs.org. is not in the cert's altnames: DNS:a.sni.fastly.net, DNS:a.sni.global-ssl.fastly.net"
      

      在 registry.npmjs.org 稳定之前,添加它可能会暂时解决 rejectUnauthorized:false

      【讨论】:

      • 请问我可以知道在哪里添加这个吗?我也有同样的问题
      【解决方案4】:

      我认为这是你的答案:

      Node.js 主机名/IP 与证书的替代名称不匹配 https://stackoverflow.com/a/16311147/6620340

      您可以添加rejectUnauthorized:false 以避免该安全检查。

      【讨论】:

        【解决方案5】:

        对于任何来到这里尝试使用纱线的人;除了将 registry.npmjs.com(或 .org)放入 hosts 文件中的说明之外,还对 yarn.npmjs.org 执行相同操作

        dig yarn.npmjs.org @1.1.1.1
        

        例如,将其添加到 /etc/hosts:

        104.16.23.35 yarn.npmjs.org
        

        我现在对 /ets/hosts 的完整补充是:

        104.16.110.30 registry.npmjs.com
        104.16.25.35 registry.npmjs.org
        104.16.23.35 yarn.npmjs.org
        

        【讨论】:

          【解决方案6】:

          请尝试以下:

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

          【讨论】:

            猜你喜欢
            • 2016-12-12
            • 1970-01-01
            • 2018-05-10
            • 2019-04-14
            • 2020-06-08
            • 1970-01-01
            • 2016-06-12
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多