Debian10下全局安装Cordova9.0.0后external-editor模块缺失求助
问题原因分析与解决办法
嘿,我来拆解下你遇到的这个cordova报错问题,核心原因其实有两个,咱们一步步来解决:
核心问题点
- 全局包路径冲突:你明明装的是cordova@9.0.0,但
npm list显示/opt/cordova下有个1.0.0的旧版本——这大概率是系统环境变量的路径优先级搞的鬼,导致你运行cordova命令时,可能先触发了旧版本,但报错栈又指向/usr/local/lib/node_modules/cordova里的依赖缺失,说明新版本的依赖也没装全。 - 全局安装时依赖损坏/缺失:
/usr/local/lib/node_modules/cordova里的inquirer模块需要external-editor,但这个依赖在安装cordova的时候没被正确下载,可能是网络波动、npm缓存损坏,或者权限问题导致的。
分步解决步骤
第一步:干掉冲突的旧版本
先搞清楚你运行的cordova到底指向哪个版本:
- 执行
which cordova,看看输出是/usr/local/bin/cordova还是/opt/cordova/bin/cordova。 - 如果是后者,直接删掉这个旧版本目录:
sudo rm -rf /opt/cordova,然后刷新下shell配置(比如source ~/.bashrc或者source ~/.zshrc,看你用的是啥shell)。
第二步:彻底重装cordova修复依赖
- 先卸载全局的cordova:
npm uninstall -g cordova - 清掉npm的缓存,避免之前损坏的缓存影响重装:
npm cache clean --force - 重新安装指定版本的cordova,要是之前有权限问题,加个sudo(注意:sudo装全局包要确认安全哈):
sudo npm install -g cordova@9.0.0 - 装完后验证下:
cordova -v,应该显示9.0.0,再用npm list -g cordova检查依赖树,确认external-editor已经在里面了。
第三步:手动补装缺失依赖(万一重装还不行)
如果重装后还是报错,直接去cordova的全局目录补依赖:
- 进入cordova的全局安装路径:
cd /usr/local/lib/node_modules/cordova - 手动装指定版本的
external-editor:
选3.1.0是因为你之前看到的依赖版本,确保和npm install external-editor@3.1.0 --saveinquirer的要求匹配。
额外提醒
- 检查下npm全局目录的权限:如果
/usr/local/lib/node_modules的所有者不是你当前用户,以后装全局包还容易出问题,你可以用chown -R $USER:$USER /usr/local/lib/node_modules改下权限,这样就不用每次都sudo了。 - 安装的时候尽量保证网络稳定,中途断网很容易导致依赖装不全哦。
内容的提问来源于stack exchange,提问作者Dirk
相关产品推荐
相关产品推荐

