Windows环境下nvm全局安装包更新失败求助
更新全局npm包时的报错解决方法
问题场景
想要更新全局安装的包,执行命令npm outdated -g --depth=0得到以下结果:
$ npm outdated -g --depth=0 Package Current Wanted Latest Location npm 6.12.1 6.14.18 9.2.0 global prettier 2.8.1 2.8.2 2.8.2 global
尝试执行node npm-cli.js update -g --force时出现报错,信息如下:
$ node npm-cli.js update -g --force internal/modules/cjs/loader.js:895 throw err; ^ Error: Cannot find module '../lib/utils/unsupported.js' Require stack: - C:\Users\sunil\AppData\Roaming\nvm\v13.1.0\node_modules\npm.old\bin\npm-cli.js ←[90m at Function.Module._resolveFilename (internal/modules/cjs/loader.js:892:15)←[39m ←[90m at Function.Module._load (internal/modules/cjs/loader.js:785:27)←[39m ←[90m at Module.require (internal/modules/cjs/loader.js:956:19)←[39m ←[90m at require (internal/modules/cjs/helpers.js:74:18)←[39m at C:\Users\sunil\AppData\Roaming\nvm\v13.1.0\node_modules\←[4mnpm.old←[24m\bin\npm-cli.js:19:21 at Object.<anonymous> (C:\Users\sunil\AppData\Roaming\nvm\v13.1.0\node_modules\←[4mnpm.old←[24m\bin\npm-cli.js:153:3) ←[90m at Module._compile (internal/modules/cjs/loader.js:1063:30)←[39m ←[90m at Object.Module._extensions..js (internal/modules/cjs/loader.js:1103:10)←[39m ←[90m at Module.load (internal/modules/cjs/loader.js:914:32)←[39m ←[90m at Function.Module._load (internal/modules/cjs/loader.js:822:14)←[39m { code: ←[32m'MODULE_NOT_FOUND'←[39m, requireStack: [ ←[32m'C:\\Users\\sunil\\AppData\\Roaming\\nvm\\v13.1.0\\node_modules\\npm.old\\bin\\npm-cli.js'←[39m ] }
解决方法
1. 快速更新prettier
prettier的Wanted和Latest版本一致,直接执行以下命令即可完成更新:
npm update -g prettier
2. 正确更新npm(适配nvm环境)
你使用nvm管理Node版本,不要用node npm-cli.js的方式更新npm,直接用npm自身命令:
- 更新到Wanted版本(6.14.18):
npm install -g npm@6.14.18 - 更新到Latest版本(9.2.0):
npm install -g npm@9.2.0
注意:Node v13.1.0属于旧版本,和npm 9.x存在兼容性风险,建议优先升级Node到稳定LTS版本(如14.x、16.x)后再更新npm,避免后续出现其他问题。
3. 清理残留的旧npm目录
报错是因为命令指向了不完整的npm.old目录,执行以下操作修复:
- 删除目录:
C:\Users\sunil\AppData\Roaming\nvm\v13.1.0\node_modules\npm.old - 重新运行上述的npm更新命令即可。
内容的提问来源于stack exchange,提问作者Sunil Kumar Das
相关产品推荐
相关产品推荐

