68

我正在尝试使用 nvm 安装 Node,但是当我键入任何版本时,它都不可用。当我输入时,nvm ls-remote我只会得到“N/A”。

我能够访问互联网,所以我不知道会发生什么。

4

14 回答 14

102

更新来自维护 nvm.sh 的 LJHarb 的评论

LJHarb 建议导致此问题的典型问题是“安装在系统中的 SSL 证书颁发机构已过期”。检查并尝试解决此问题将是更好的第一步。

如果您认为 nvm.sh 方面存在问题,LJHarb 会要求用户在nvm.sh 的问题跟踪器上提交错误。

欢迎在评论部分查看原文。

另外,我想指出,以下解决方案旨在作为解决方法,仅在您确实处于绑定状态时临时使用。不建议永久修改导出的镜像或 nvm.sh 脚本本身。

编辑:发现更容易修复

您可以导出它用来抓取内容的镜像的非 https 版本:

export NVM_NODEJS_ORG_MIRROR=http://nodejs.org/dist

然后 nvm 工作

预编辑

刚才遇到了同样的问题。

看起来默认情况下它会尝试使用 curl 如果它在您的系统上可用。

我假设您也在 linux 上,因此请尝试运行curl $NVM_NODEJS_ORG_MIRROR并查看是否遇到与我相同的错误:

curl: (77) error setting certificate verify locations:
  CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none

也许某些证书已过期或配置错误(或有人在做一些令人讨厌的事情),直到它被修复,如果您不介意绕过安全问题,您可以找到 nvm.sh 文件(~/.nvm/nvm.sh如果您按照安装信息应该在),你可以-k在 curl 之后的第 17 行添加一个,所以它看起来像这样:

-- nvm.sh --
nvm_download() {
16  if nvm_has "curl"; then
17    curl -k $*
18  elif nvm_has "wget"; then
19    # Emulate curl with wget
...
}

不要忘记重新启动你的 shell,然后尝试nvm ls-remote. 假设修复有效,您现在应该可以使用 nvm。

于 2014-10-21T01:26:04.653 回答
23

这很可能是由于 curl 无法为 https url 使用证书(使用 验证curl $NVM_NODEJS_ORG_MIRROR)引起的。与其使用 http url 作为解决方法,不如通过将 curl 指向适当的 CA 包(source1source2来修复 curl 。将以下行添加到您的.bashrc

  • Ubuntu(假设您已ca-certificates安装软件包)

    export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
    
  • RHEL 7

    export CURL_CA_BUNDLE=/etc/pki/tls/certs/ca-bundle.crt
    
于 2016-03-30T05:53:30.540 回答
15

创建一个名为

~/.curlrc

在其中插入一行

-k

然后再试一次。

于 2021-03-09T06:23:02.317 回答
8

似乎 url 末尾缺少“/”,这就是 301 永久移动消息的原因。所以将 nvm.sh 中的链接从

http://nodejs.org/dist

http://nodejs.org/dist/

让它工作。

于 2016-02-07T16:29:11.003 回答
7

如果您在代理后面使用 nvm,则需要将代理配置设置为 curl

编辑或创建文件~/.curlrc并将这一行添加到您的代理中

echo 'proxy=http://<proxy-user>:<proxy-pass>@<proxy-url>:<proxy-port>' >> ~/.curlrc

如果您的代理不需要用户名和密码,您可以使用它:

echo 'proxy=http:<proxy-url>:<proxy-port>' >> ~/.curlrc
于 2018-09-13T12:43:33.267 回答
7

对于像我这样在搜索后登陆这里的其他人:

我今天在 Ubuntu 上遇到了同样的问题,但原因是/etc/ssl/certs/ca-certificates.crt文件完全为空。

解决方案是运行:

sudo update-ca-certificates
于 2020-07-20T13:30:23.860 回答
6

从改变

export NVM_NODEJS_ORG_MIRROR=http://nodejs.org/dist/

export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist/

为我工作:)

于 2020-07-19T17:24:10.293 回答
2

我遇到了同样的问题,但其他解决方案都没有帮助。curl -v $NVM_NODEJS_ORG_MIRROR/显示 TLS 1.2 并且证书没有问题。当我尝试which curl时,事实证明我的 PATH 中有一个 anaconda3/bin 目录,它有自己的 curl 版本(不知道他们为什么需要它)。一旦我确定了我的路径,nvm ls-remote就可以正常工作。希望这有助于节省其他人的一些挫败感。

于 2016-12-15T17:29:52.533 回答
1

我的情况可能很少见,但只想向该线程添加另一个数据点:

由于我的本地设置问题,我不想安装curl,我明确设置了一个别名,curl以警告自己以后不要安装它,这导致nvm我相信我有 curl 可用并用于curl下载。在我删除我的别名后它起作用了。

解决方案

明确检查您的curlorwget是否可用。

于 2020-09-06T20:43:17.663 回答
1

我最近有这个问题。更改为http://nodejs.org/dist/对我不起作用,因为它重定向到 https 并导致 NA 从nvm ls-remote. 所以我所做的是:

sudo update-ca-certificates

然后我编辑~/.nvm/nvm.sh并更改

http://nodejs.org/disthttps://nodejs.org/dist/(添加 https 和“/”以避免重定向)并且它有效

于 2021-09-29T06:34:18.033 回答
0

对我来说,这将工作

nvm alias default node在最新安装的 Node 版本(8.11.1)处指向“默认”。

于 2019-07-18T07:48:03.347 回答
0

在 Windows 7 上的 Virtual Box 4.3.30 下使用 Vagrant 1.7.1 运行 Ubuntu 14.04 盒子时,我遇到了这个问题。我尝试了上面的建议,但没有任何效果。我在这里发现这篇文章与我在尝试运行时遇到的 Curl 错误有关:curl $NVM_NODEJS_ORG_MIRROR 错误是:curl: (7) Couldn't connect to server 我能够按照该帖子上的建议,然后一旦我重新启动我的 Vagrant 框,vagrant reload我就能够运行nvm ls-remote并查看节点版本列表并安装。这是我在 vagrant box 上所做的:cd /etc/

sudo nano hosts

更改 127.0.0.1 本地主机

至:

0.0.0.0 本地主机

希望这可以帮助任何有同样问题的人。谢谢@Truong Nguyen

于 2016-08-05T20:02:02.190 回答
0

它在我的 linux 中对我有用:

导出 NVM_NODEJS_ORG_MIRROR= http://nodejs.org/dist

于 2019-10-08T16:54:12.083 回答
0

在 Ubuntu 服务器上,默认情况下不使用 DHCP 设置接口。我忘记了这一点,安装 nvm 后,我重新启动了网络连接,但没有意识到这一点。我知道您有网络连接,但我将其发布为供后代检查的内容。很容易被遗忘/错过的愚蠢简单的事情。

于 2021-12-09T23:21:35.030 回答