当在nvm环境中不能更新npm时,可以采取以下对策
如果 npm 本体的版本不是最新的,则在使用 npm 命令后可能会显示提示更新的消息。
Update available X.X.X → X.X.X
Run npm i -g npm to update
然而,尽管执行上述命令,却出现了以下错误,导致无法安装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.
在搜索是否有解决方案时,我找到了nvm-windows的问题页面,发现这是nvm-windows特有的问题。
-
- 2020/01/27 追記: 上記の issue はその後も伸び続け、最終的に専用のモジュールがリリースされたようです。
- felixrieseberg/npm-windows-upgrade: Upgrade npm on Windows
按顺序阅读并尝试了其中几个命令后,以下是stramel氏撰写的成功内容。
#!/usr/bin/bash
cd "$PROGRAMFILES"/nodejs
rm npm npx npm.cmd npx.cmd
mv node_modules/npm node_modules/npm2
node node_modules/npm2/bin/npm-cli.js i -g npm@latest
rm -rf node_modules/npm2/
如果你正在使用命令提示符等工具,可以使用以下命令来执行相同的操作。
cd %ProgramFiles%\nodejs
del npm npx npm.cmd npx.cmd
move node_modules\npm node_modules\npm2
node node_modules\npm2\bin\npm-cli.js i -g npm@latest
rd /S /Q node_modules\npm2
简而言之,由于program files/nodejs目录是一个符号链接,删除其中的文件时会导致错误,所以我们通过重命名临时回避这个错误。
在我的情况下,执行了上述命令后,
npm i -g npm 不再出现错误,并能够进行之后的更新。