npm 安装失败(安装 MERN 堆栈)
npm install fails (installing MERN stack)
我正在尝试在我的 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 ]
请尝试以下操作:
sudo npm config set registry https://registry.npmjs.org/
我认为这是你的答案:
Node.js Hostname/IP 与证书的别名不匹配
您可以添加 rejectUnauthorized:false
以避免安全检查。
这个问题是全球性的。现在每个人都可能有同样的问题。
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
除了@jcemoller 的回答,对我来说:
- 按照 http://status.npmjs.org
的 DNS 固定说明进行操作
- 做
npm config set strict-ssl false
然后成功了。
以上配置应该在一天左右,问题完全解决后恢复。
正如许多其他答案指出的那样,这似乎是一个全球性问题,我也遇到了同样的问题。我确实按照 https://status.npmjs.org/incidents/v22ffls5cd6h.
上的说明解决了问题(就像@muradm 和其他人所建议的那样)
那里的说明是,您可以使用 dig 命令或使用 google DNS 工具检查自己回答 www.npmjs.com 的 IP 是什么。
结果是在我的主机文件中包含以下行:
104.16.109.30 registry.npmjs.org
这解决了我的问题。
请记住,这是一个临时修复,应该在周末后删除!
祝你好运!
-- 编辑--
此外,这是假设您使用 registry.npmjs.org 作为您的 NPM 注册表端点(这是默认设置)。要检查这一点,您可以 运行:
npm config get registry
如果那个 returns "https://registry.npmjs.com/" 例如,你可以尝试添加到你的主机:
104.16.109.30 registry.npmjs.com
我刚刚测试过并且工作正常!
P.S.: 如果出于任何原因你不确定如何编辑主机文件,你可以在这里查看:https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/
对于来到这里尝试使用 yarn 的任何人;除了有关将 registry.npmjs.com(或 .org)放入主机文件的说明外,还对 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
我正在尝试在我的 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 ]
请尝试以下操作:
sudo npm config set registry https://registry.npmjs.org/
我认为这是你的答案:
Node.js Hostname/IP 与证书的别名不匹配
您可以添加 rejectUnauthorized:false
以避免安全检查。
这个问题是全球性的。现在每个人都可能有同样的问题。
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
除了@jcemoller 的回答,对我来说:
- 按照 http://status.npmjs.org 的 DNS 固定说明进行操作
- 做
npm config set strict-ssl false
然后成功了。
以上配置应该在一天左右,问题完全解决后恢复。
正如许多其他答案指出的那样,这似乎是一个全球性问题,我也遇到了同样的问题。我确实按照 https://status.npmjs.org/incidents/v22ffls5cd6h.
上的说明解决了问题(就像@muradm 和其他人所建议的那样)那里的说明是,您可以使用 dig 命令或使用 google DNS 工具检查自己回答 www.npmjs.com 的 IP 是什么。
结果是在我的主机文件中包含以下行:
104.16.109.30 registry.npmjs.org
这解决了我的问题。 请记住,这是一个临时修复,应该在周末后删除! 祝你好运!
-- 编辑--
此外,这是假设您使用 registry.npmjs.org 作为您的 NPM 注册表端点(这是默认设置)。要检查这一点,您可以 运行:
npm config get registry
如果那个 returns "https://registry.npmjs.com/" 例如,你可以尝试添加到你的主机:
104.16.109.30 registry.npmjs.com
我刚刚测试过并且工作正常!
P.S.: 如果出于任何原因你不确定如何编辑主机文件,你可以在这里查看:https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/
对于来到这里尝试使用 yarn 的任何人;除了有关将 registry.npmjs.com(或 .org)放入主机文件的说明外,还对 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