【问题标题】:nvm ls-remote command results in "N/A"nvm ls-remote 命令导致“N/A”
【发布时间】:2014-12-16 02:10:02
【问题描述】:

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

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

【问题讨论】:

标签: node.js nvm


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    sudo update-ca-certificates

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

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

    【讨论】:

    • /dist 之后的结尾起到了作用。谢谢。只是为了获得更多信息,而不是编辑 nvm.sh,您可以将 export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist/ 添加到以下文件之一 ~/.bashrc, ~/.zshrc, ~/.profile
    【解决方案3】:

    创建一个名为

    的文件

    ~/.curlrc

    在里面插入一行

    -k
    

    然后再试一次。

    【讨论】:

      【解决方案4】:

      这很可能是由于 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
        

      【讨论】:

      • 这是正确的答案。我最初做了第一个,问题又回来了。
      • 可能还取决于您的 Linux 风格,在我的 RHEL7 上,我不得不改用“export CURL_CA_BUNDLE=/etc/pki/tls/certs/ca-bundle.crt”
      • @EricSoyke 谢谢,用 RHEL 包位置更新了答案
      【解决方案5】:

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

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

      解决方案

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

      【讨论】:

        【解决方案6】:

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

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

        解决方案是运行:

        sudo update-ca-certificates
        

        【讨论】:

        • 这对我没有任何作用(没用),但似乎指出了问题的正确方向(过期证书),所以试一试
        • 这一切都为我解决了。
        【解决方案7】:

        改变

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

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

        为我工作:)

        【讨论】:

        • 这为我解决了问题
        【解决方案8】:

        它在我的 linux 中对我有用:

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

        【讨论】:

          【解决方案9】:

          对我来说,这是可行的

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

          【讨论】:

          • 等等...我需要 node 才能安装 nvm 吗?
          【解决方案10】:

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

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

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

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

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

          【讨论】:

          • 我使用的是 ubuntu docker 镜像,只有这个对我有用
          【解决方案11】:

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

          【讨论】:

            【解决方案12】:

            我在使用 Vagrant 1.7.1 在 Windows 7 上的 Virtual Box 4.3.30 下运行 Ubuntu 14.04 时遇到了这个问题。我尝试了上面的建议,但没有任何效果。我在here 上找到了这篇文章,这与我在尝试运行时遇到的 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

            【讨论】:

              【解决方案13】:

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

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

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

              欢迎在 cmets 部分查看原文。

              另外,我想指出,以下解决方案旨在作为解决方法,仅在您确实处于绑定状态时临时使用。不建议永久修改导出的镜像或 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如果您按照安装信息进行操作),您可以在 curl 后的第 17 行添加 -k,如下所示:

              -- 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。

              【讨论】:

              • 我没有收到任何卷曲错误。相反,我得到了301 moved permanently 的 HTML 错误文档。当我回显该字符串时,我得到https://nodejs.org/dist,据我所知这是绝对正确的。
              • 顺便说一句,您在curl 之后添加-k 的原始解决方案解决了问题。 export 解决方案不起作用。感谢您的帮助!
              • 我是nvm.sh 的维护者。请不要直接编辑 nvm.sh。如果您有 SSL 问题,请修复您的 SSL 问题
              • 通常是您系统中安装的 SSL 证书颁发机构已过期。在这种特定情况下,nodejs.org 和 iojs.org 上的 SSL 证书配置被临时更改 - 即,它不受用户控制,并且在没有用户干预的情况下被修复。一般来说,在这些情况下,请在nvm.sh 上提交问题,而不是发布随机的 Stack Overflow 问题,您将获得比您在此处获得的更多上下文的快速响应。
              • @LJHarb 将您的输入添加到答案中。希望这能抓住你在说什么。如果没有,请随时编辑和添加:)
              【解决方案14】:

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

              更改 nvm.sh 中的链接

              http://nodejs.org/dist

              http://nodejs.org/dist/

              让它工作。

              【讨论】:

              • 快速查看cat nvm.sh | grep "curl.*nodejs.org/dist",查看结果
              猜你喜欢
              • 2018-09-02
              • 2015-08-11
              • 2014-01-02
              • 2017-07-06
              • 1970-01-01
              • 2013-07-14
              • 1970-01-01
              • 2014-01-26
              • 1970-01-01
              相关资源
              最近更新 更多