【问题标题】:Updating npm when using nvm-windows使用 nvm-windows 时更新 npm
【发布时间】:2019-07-06 05:39:11
【问题描述】:

我使用的是 nvm-windows 1.1.7 版。

我刚刚安装了节点 11.9.0。

nvm 将 npm 版本 6.5.0 与此节点版本一起安装。 但是,已经有 npm 6.7.0 版可用。

当我现在做npm i -g npm 时,我得到:

npm ERR! path C:\Program Files\nodejs\npm.cmd
npm ERR! code EEXIST
npm ERR! Refusing to delete C:\Program Files\nodejs\npm.cmd: is outside C:\Program Files\nodejs\node_modules\npm and not a link
npm ERR! File exists: C:\Program Files\nodejs\npm.cmd
npm ERR! Move it away, and try again.

我没有办法避免这种情况。

【问题讨论】:

  • 也许 Volta 是我们正在寻找的工具?检查volta.sh

标签: node.js windows npm nvm nvm-windows


【解决方案1】:

nvm-windows github 存储库上的此问题中提供了几种解决方法:

https://github.com/coreybutler/nvm-windows/issues/300

有使用 DOS、PowerShell、bash 和批处理脚本的示例。

【讨论】:

【解决方案2】:

这是我的回答的副本:https://stackoverflow.com/a/50955293/491553

这是我在运行 nvm-windows 时升级 npm 的方法:

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

并且繁荣,升级。

【讨论】:

  • 要找到你的 nvm 安装路径,你可以从 powershell 运行 get-command nvm。
  • 我已经使用这个命令升级到特定版本node npm-cli.js i -g npm@x.y.z
  • 我认为我们必须在最后一个命令中使用 --force 。顺便说一句,谢谢你的回答。
  • 上面的那些mv 命令是针对powershell 的,但是你不能在PowerShell 中使用%appdata% 语法,所以使用$ENV:AppData 代替它。原来我的choco install -y nvm 将 nvm 放入了C:\ProgramData\nvm,所以我不得不使用cd $ENV:ProgramData\nvm\v14.17.1。是的,我必须添加强制标志node npm-cli.js i -g npm@latest --force
  • 如果目录中有npx,那么即使它也必须重命名。就我而言,我也将其重命名。 mv npx npx-oldmv npx.cmd npx-old.cm
【解决方案3】:

我有 Windows 10 操作系统。

我是按照以下方式安装的。

cd %APPDATA%\nvm\v8.11.3
move npm 5.6.0
move npm.cmd 5.6.0.cmd
cd node_modules\
move npm 5.6.0
cd 5.6.0\bin
node npm-cli.js i -g npm@latest

【讨论】:

    【解决方案4】:

    我还发现有必要将windows-nvm 安装到c:\nvmc:\nodejs 以防止出现不支持的带有空格的路径问题。

    rm C:\nodejs\npm*
    rm C:\nodejs\npx*
    mv C:\nodejs\node_modules\npm C:\nodejs\node_modules\npm-old
    node C:\nodejs\node_modules\npm-old\bin\npm-cli.js i -g npm@next
    

    【讨论】:

      【解决方案5】:

      我不得不强迫它:-/

      到时候

      node npm-cli.js i -g npm@latest
      

      我宁愿使用

      node npm-cli.js i -g npm@latest --force
      

      可能是为了克服覆盖“C:\Program Files\nodejs”链接所涉及的权限错误。

      【讨论】:

      • 同上 - 不得不强迫它,但它奏效了。很高兴有人先尝试了这个?
      • 仅供参考,--force 对我不起作用,而是让 npm 处于“损坏”状态,它已删除旧安装但无法安装新安装。我通过创建一个新文件夹来修复它,运行yarn init,然后运行yarn add npm,然后我将其npm 文件夹的内容复制到(现在基本上是空的)...../nvm/XXX/node_modules/npm 文件夹中,然后运行:node ((Get-Item "C:\Program Files\nodejs").Target[0] + "\node_modules\npm\bin\npm-cli.js").ToString() i -g npm@latest跨度>
      【解决方案6】:
      1. 下载这个updateNpm.bat文件
      2. 在同一个文件夹中打开powershell并运行这个命令updateNpm.bat latest

      【讨论】:

      • 哦,哇,经过这么多完美的尝试!谢谢你
      【解决方案7】:

      这对我有用:

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

      如果您已经安装了 git bash,请在那里使用它。

      【讨论】:

      • 这个问题有 windows 作为标签,文本也很清楚地说明了这一事实,下载 shellscript 不会做任何事情。
      • @Timotheus 确实如此......它会首先卸载当前版本的 npm,然后安装最新版本。它对我有用....
      • 在 powershell 和 cmd 中我得到了一个'sh' is not recognised...
      • 如果您安装了 git bash,请尝试一下
      【解决方案8】:

      对我来说,只有在使用 npm v6 更新 npm 时才会遇到问题。
      因此,通过 npx 使用更新版本的 npm 来运行升级对我有用。

      For the very newest version
      npx npm install -g npm
      
      Or use a specific version
      npx npm@7 install -g npm@7
      

      【讨论】:

        【解决方案9】:

        我今天遇到了这个问题,我解决它的方法是使用 nvm 安装最新的节点,然后将 npm 文件从最新版本复制到我正在使用的版本。

        nvm install latest
        cd AppData/Roaming/nvm/LATEST
        xcopy npm.cmd ../LTS && xcopy npm ../LTS && xcopy node_modules/npm ../LTS
        

        然后我通过尝试编译我的最新代码来确认它可以正常工作。

        【讨论】:

          【解决方案10】:

          我尝试了脚本和其他解决方案,这是迄今为止最简单的方法:

          1. 导航到相关的节点文件夹 (cd C:\Users\yourUser\AppData\Roaming\nvm\vxx.xx.x)
          2. 重命名 npm -> npm2
          3. 重命名 npm.cmd -> npm2.cmd
          4. 重命名 npx -> npx2
          5. 重命名 npx.cmd -> npx2.cmd
          6. 运行npm2 install -g npm@your-version
          7. 新的 npm 会创建 npm、npm.cmd、npx、npx.cmd 文件,所以你可以删除之前重命名的文件

          【讨论】:

          • 对于第 1 步,此 Powershell 命令将在正确的文件夹中启动资源管理器窗口:start ((Get-Item "C:\Program Files\nodejs").Target[0])
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-25
          • 1970-01-01
          • 2012-04-03
          • 1970-01-01
          • 1970-01-01
          • 2017-05-14
          • 1970-01-01
          相关资源
          最近更新 更多