降级Node.js至v14.21.3后npm命令失效问题求助
解决Node.js v14.21.3 LTS降级后npm命令失效问题
问题场景
原本Node.js及npm命令运行正常,因公司要求降级至Node.js v14.21.3 LTS版本,卸载原版本重装后,所有npm命令(包括npm install)均无法执行,报错提示找不到timers/promises模块。
报错信息
C:\Users\f.giovannini>npm install -g npm C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\lib\es6\validate-engines.js:31 throw err ^ Error: Cannot find module 'timers/promises' Require stack: - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\node_modules\@npmcli\agent\lib\util.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\node_modules\@npmcli\agent\lib\index.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\node_modules\make-fetch-happen\lib\remote.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\node_modules\make-fetch-happen\lib\cache\entry.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\node_modules\make-fetch-happen\lib\cache\index.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\node_modules\make-fetch-happen\lib\fetch.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\node_modules\make-fetch-happen\lib\index.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\node_modules\npm-registry-fetch\lib\index.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\lib\utils\replace-info.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\lib\utils\error-message.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\lib\utils\exit-handler.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\lib\cli-entry.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\lib\cli.js - C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:931:15) at Function.Module._load (internal/modules/cjs/loader.js:774:27) at Module.require (internal/modules/cjs/loader.js:1003:19) at require (internal/modules/cjs/helpers.js:107:18) at Object.<anonymous> (C:\Users\f.giovannini\AppData\Roaming\npm\node_modules\npm\node_modules\@npmcli\agent\lib\util.js:3:16) at Module._compile (internal/modules/cjs/loader.js:1114:14) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1143:10) at Module.load (internal/modules/cjs/loader.js:979:32) at Function.Module._load (internal/modules/cjs/loader.js:819:12) at Module.require (internal/modules/cjs/loader.js:1003:19) { code: 'MODULE_NOT_FOUND', requireStack: [ 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\@npmcli\\agent\\lib\\util.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\@npmcli\\agent\\lib\\index.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\make-fetch-happen\\lib\\remote.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\make-fetch-happen\\lib\\cache\\entry.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\make-fetch-happen\\lib\\cache\\index.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\make-fetch-happen\\lib\\fetch.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\make-fetch-happen\\lib\\index.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\npm-registry-fetch\\lib\\index.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\lib\\utils\\replace-info.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\lib\\utils\\error-message.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\lib\\utils\\exit-handler.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\lib\\cli-entry.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\lib\\cli.js', 'C:\\Users\\f.giovannini\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js' ] }
排查过程
- 因公司限制无法升级Node.js,排除新版本替代方案
- 多次重装Node.js v14.21.3 LTS,确认安装包完整性无问题
- 初步判断为npm版本与Node.js v14不兼容,最终发现用户AppData目录残留旧Node.js/npm文件,导致npm调用无权限的残留程序(此前用Revo Uninstaller卸载不彻底)
解决方案
- 完全卸载当前Node.js版本
- 手动删除以下残留目录(替换为你的用户名):
C:\Users\<你的用户名>\AppData\Roaming\npmC:\Users\<你的用户名>\AppData\Roaming\npm-cache- 检查并删除其他可能存在的Node.js相关残留文件夹
- 重新安装Node.js v14.21.3 LTS版本
- 打开命令行执行
npm -v、npm install等命令验证功能正常
内容的提问来源于stack exchange,提问作者Federico Giovannini
相关产品推荐
相关产品推荐

