【问题标题】:How can I change the version of npm using nvm?如何使用 nvm 更改 npm 的版本?
【发布时间】:2012-04-03 02:13:17
【问题描述】:

我一直在使用 NVM 为我的节点工作安装最新版本的 nodeJS。它可以很好地安装单独的版本并在它们之间切换。它还在每个本地 .../bin 文件夹中安装最新版本的 NPM 以及节点二进制文件。但是,似乎没有任何方法可以切换我正在使用的 NPM 版本(或者至少我无法弄清楚)。

我能想到的唯一解决方案是删除它默认使用的二进制文件(这是我第一次使用 NVM 安装节点时安装的 NPM),并在其位置放置最新的 NPM 二进制文件。但是,我想知道是否有更好的方法来做到这一点。

【问题讨论】:

  • 为什么要更改 NPM 的版本,并不是要安装任何仅适用于旧版本 NPM 的软件包。而在 node 0.6 之后,node 自带了最新的 NPM。所以改变 node 版本也会改变 npm 版本。
  • 除了它不通过 NVM。是的 - node 带有 NPM,但这只是意味着它在旁边安装了一个二进制文件。我可以在它们各自的文件夹中看到这两个二进制文件,但是当我运行“nvm use v0.6.13”时,使用的 npm 二进制文件仍然是使用旧版本节点安装的那个,而不是使用最新版本安装的那个。
  • 这是 npm 的代码:github.com/creationix/nvm/blob/master/nvm.sh#L135-148,从 0.6 开始就不需要了,所以也许你应该尝试删除该部分。那应该有帮助。您也可以在 github 上创建问题。
  • 我现在正在解决这个问题,感谢任何帮助 - stackoverflow.com/questions/50976138/…

标签: node.js npm


【解决方案1】:

我们可以使用 n 轻松解决这个问题。

安装 n

>> npm install -g n

切换版本

>> n latest

切换到特定版本

>> n 10.16.0

【讨论】:

    【解决方案2】:

    由于某种原因npm install -g npm@X.X.X 不起作用,所以我在npm 文件夹中更改了package.json 中的npm 版本

    ➜  ~ which npm
    /opt/homebrew/bin/npm
    

    然后运行

    npm install npm
    

    macOS 11.2.2,M1 (arm64)

    【讨论】:

      【解决方案3】:
      1. 从这里https://nodejs.org/en/download/releases/找到你想使用的node和npm版本
      2. nvm use 8.11.4
      3. 您已经获得了带有节点 8.11.4 的 npm 5.6

      请使用nvm use node_version

      【讨论】:

      • 第一次可以正常工作。如果您从较旧的节点版本升级运行 npm i -g npm 并将其更新到最新版本,则您的 npm 版本将是最新的。
      【解决方案4】:

      更改版本的简单方法是首先使用 nvm ls 然后从列表中选择版本 nvm 使用版本

      【讨论】:

        【解决方案5】:

        NVM 在 Windows 上的安装和使用

        以下是在 Windows 上安装 NVM 的步骤:

        NVM 代表节点版本管理器,这将有助于切换您的节点版本以供特定用途。它还允许用户使用多个 npm 和节点版本。

        安装 nvm 设置。 使用命令“nvm list”查看已安装节点版本列表。 输入“nvm use version number[6.9.3]”切换版本。 对于more info

        【讨论】:

          【解决方案6】:

          我在 Windows 上,但我无法让这些东西正常工作。我不断收到有关文件妨碍的错误。这虽然有效:

          cd %APPDATA%\nvm\v8.10.0           # or whatever version you're using
          mv npm npm-old
          mv npm.cmd npm-old.cmd
          cd node_modules\
          mv npm npm-old
          cd npm-old\bin
          node npm-cli.js i -g npm@latest
          
          cd %APPDATA%\nvm\v8.10.0 # or whatever version you're using
          rm npm-old
          rm npm-old.cmd
          cd node_modules\
          rm -rf npm-old
          

          然后繁荣,我又回来做生意了。

          【讨论】:

          • 谢谢,这对我也有用,在 Windows 上。 (有同样的文件冲突问题)
          • 为我工作,谢谢。我在 Windows 上使用 nvm 来管理节点,并希望在切换到节点版本后提升 nvm。必须以提升的权限运行控制台。我的路径 nodejs 文件夹是“C:\
          • 谢谢,他们可能需要修复 npm 更新 nvm windows 上每个旧 nodejs 版本的方式。
          • 这帮助我更新了 Node 10.x 附带的 npm。谢谢!
          • 使用 nodejs v10.15.3 在 windows 上工作,我必须将 mv 更改为 renrmdelrmdir
          【解决方案7】:

          编辑:自从这个问题第一次被回答几年后,如a newer answer 中所述,现在有一个命令:

          nvm 现在有一个更新 npm 的命令。这是nvm install-latest-npmnvm install --latest-npm

          nvm install-latest-npm:尝试在当前节点版本上升级到最新的工作npm

          nvm install --latest-npm: 安装后,尝试在给定节点版本上升级到最新的工作 npm

          以下是此问题正确答案的先前版本。

          在第一次提出这个问题三年多之后,现在答案似乎要简单得多。只需更新 nvm 安装的版本,它位于 ~/.nvm/versions/node/[your-version]/lib/node_modules/npm

          我刚刚安装了npm 2.14.7自带的node 4.2.2,但是我想用npm 3。所以我做了:

          cd ~/.nvm/versions/node/v4.2.2/lib
          npm install npm
          

          简单!

          是的,这应该适用于任何你想成为特定版本节点的“全局”的模块,而不仅仅是 npm。


          编辑 1:在最新版本中,npm -g 很智能,会将模块安装到上述路径中,而不是系统全局路径中。


          感谢@philraj 在评论中指出这一点。

          【讨论】:

          • 对于像我一样不知道自己的 nvm 在哪里的人,请运行which npm
          • 如果你想要一个不是最新版本的 npm,运行npm install npm@major.minor.patch 来获取那个特定的版本,例如npm@3.10.9
          • 类似的东西也适用于nvm-windows,例如cd ~/AppData/Roaming/nvm/v5.10.1.
          • 对于在 Windows 上使用 nvm 的任何人,都可以像上面一样完成(运行 npm install npm),但在 Windows 的节点安装位置。在 Windows 10 中,这是 ~/AppData/Roaming/nvm/[your-version]。即用户\myusername\AppData\Roaming\nvm\v9.7.1
          • 更简单:nvm install-latest-npm 由 samlandfried 回答 -stackoverflow.com/a/47519162/5991278
          【解决方案8】:

          在现有 Node 安装之上安装 nvm-windows 后,我遇到了同样的问题。解决方案就是按照说明进行操作:

          您还应该删除现有的 npm 安装位置(例如 "C:\Users\AppData\Roaming\npm") 以便 nvm 安装位置 将被正确使用。

          Installation & Upgrades

          【讨论】:

            【解决方案9】:

            nvm 现在有一个更新 npm 的命令。这是nvm install-latest-npmnpm install --latest-npm

            【讨论】:

            • 你有这个文档的链接吗?
            • 来自nvm help 控制台输出:--latest-npm After installing, attempt to upgrade to the latest working npm on the given node version 不过,我在nvm 文档中没有找到对此的引用。如果你找到了,请分享。
            • 谢谢!这确实应该被标记为正确答案。
            • 它仅适用于 32 位
            • 当我运行它时,它也更新了节点
            【解决方案10】:

            在 Windows 中,以管理员身份运行终端(以防我遇到权限问题)。然后通过

            使用特定的节点版本(比如 7.8.0)
            nvm use 7.8.0
            

            然后将您的 npm 更新为所需的特定版本

            npm install -g npm@5.0.3
            

            【讨论】:

              【解决方案11】:

              上述说明略有不同,对我有用。 (MacOS Sierra 10.12.6)

              npm install -g npm@3.10.10
              rm /usr/local/bin/npm
              ln -s ~/.npm-packages/bin/npm /usr/local/bin/npm
              npm --version
              

              【讨论】:

                【解决方案12】:

                npm i -g npm 呢?您是否也尝试过运行它?

                【讨论】:

                • 这始终是我通常使用的最快和最简单的方法。
                【解决方案13】:
                npm install npm@x.x.x -g
                npm install npm@5.4.0 -g
                

                【讨论】:

                • 虽然问题是关于 nvm 的,但我实际上是为此而来的,谢谢。点赞。
                • 由于-g 标志,无论您使用nvm 安装了哪个版本的Node,此命令都将起作用。当你在 nvm 中切换版本时,npm 版本也会发生变化,因此很容易撤消此操作。
                【解决方案14】:

                通过查看 www.npmjs.com/install.sh,我发现有一种方法可以通过设置环境变量来安装特定版本

                export npm_install="2.14.14"

                然后按照 npmjs.com 中的说明运行下载脚本:

                curl -L @987654321@ | sh

                如果您省略设置 npm_install 变量,那么它将安装他们标记为 latest

                的版本

                【讨论】:

                • 我不得不使用curl -L https://www.npmjs.com/install.sh | sudo sh,aaaa 并且这种方法不起作用,即使我已经导出了所述环境变量,我也得到了最新版本。可恶。我想要 2.14.7 中的 2.15.9 版本,下面的答案让我处于 3.8.6,现在这个答案让我处于 4.0.2。 WTF。
                【解决方案15】:

                在基于 linux 的操作系统上更改 npm 版本还不是一个简单的命令过程。我已经完成以下操作以切换回旧版本的 npm。这应该可以让任何版本的 npm 工作。先安装你要使用的npm版本:

                sudo npm install -g npm@X.X.X
                

                删除 /usr/local/bin/ 中的符号链接

                sudo rm /usr/local/bin/npm
                

                使用您已安装的所需 npm 版本重新创建符号链接

                sudo ln -s /usr/bin/npm@X.X.X /usr/local/bin/npm
                

                【讨论】:

                • 按照这些说明尝试从 2.14.7 升级到 2.15.9,现在当我输入 npm -v 时,我得到 3.8.6。该死。
                • 在尝试了几件事之后,对我来说,只需使用sudo npm install -g npm@x.x.x 就可以让我得到来自npm -v 的响应版本。无论如何,这至少从 4.x 到 2.15.9 有效。
                • 在我的情况下 sudo npm install -g npm@4.6.1 只安装了 4.6.1 但仍然使用 npm 5.1.0。您的提示帮助我切换到 4.6.1。
                【解决方案16】:

                nvm 不处理 npm。

                所以如果你想安装 node 0.4.x(很多包仍然依赖)并使用 NPM,你仍然可以使用 npm 1.0.x。

                安装node 0.6.x(npm 1.1.x自带)并用npm安装nvm:

                npm install nvm
                . ~/nvm/nvm.sh
                

                使用 nvm 安装节点 0.4.x:

                nvm install v0.4.12
                nvm use v0.4.12
                

                使用 install.sh 安装 npm(注意 -L 参数以跟随任何重定向):

                curl -L https://npmjs.org/install.sh | sh
                

                这将检测节点 0.4.12 并在 ~/nvm/v0.4.12/lib/node_modules 文件夹中安装 npm 1.0.106 并为 nvm 创建符号链接

                ~/nvm/v0.4.12/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js
                

                如果你尝试运行 npm,它仍然会报错,但如果你再次运行nvm use v0.4.12,它现在应该可以工作了。

                【讨论】:

                • 谢谢!注意 url 已更改为:curl https://npmjs.org/install.sh | sh
                • 现在这个答案真的很老吗?我的 npm 由 nvm 自动下载,作为我正在使用的节点版本的依赖项。
                • 是的。它是旧的。如果您仍在使用节点 0.4 和旧的 nvm,您可能会看到此问题。
                • 再次更改网址强制www。使用curl -L 跟随重定向。
                猜你喜欢
                • 2019-05-16
                • 1970-01-01
                • 2022-11-10
                • 2020-07-05
                • 2018-04-01
                • 2021-02-28
                • 1970-01-01
                • 2021-01-17
                • 1970-01-01
                相关资源
                最近更新 更多