执行ionic cordova run android无响应,Android模拟器未启动且插件报错
问题根源分析
从你的报错日志和环境信息来看,有两个核心问题导致命令无响应、模拟器未启动:
- Node版本冲突:你用nvm安装的全局Node是v8.4.0,但系统当前运行的Node是v9.4.0,版本不一致会导致依赖加载异常,触发后续的脚本错误。
- cordova-plugin-fcm插件兼容问题:旧版的
cordova-plugin-fcm脚本(fcm_config_files_process.js第80行)在Node v8+环境下处理输出时,传递了非字符串/Buffer类型的参数,触发了TypeError [ERR_INVALID_ARG_TYPE],直接中断了Cordova的构建流程,导致后续模拟器启动的逻辑根本没机会执行。
分步解决方案
1. 统一Node版本(优先处理)
因为你使用nvm管理Node版本,先确保当前终端使用的Node版本和全局CLI依赖的版本一致:
- 打开终端,执行
nvm use 8.4.0切换到全局CLI对应的Node版本 - 执行
node -v确认版本显示为v8.4.0 - (可选优化)建议切换到Node v10.x长期支持版本(比如
nvm install 10.24.1 && nvm use 10.24.1),v9.x是不稳定的过渡版本,本身就容易出现兼容问题。
2. 替换FCM插件(推荐方案)
旧版cordova-plugin-fcm已经停止维护,存在大量Node和Cordova版本兼容问题,推荐使用社区维护的替代插件:
- 先卸载旧插件:
ionic cordova plugin remove cordova-plugin-fcm - 安装兼容的替代插件:
ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated - 同步Android平台配置:
ionic cordova prepare android
如果你暂时不想替换插件,可以临时手动修复报错脚本:
- 打开文件
C:\Users\pkhon\WebstormProjects\fcmPractice\myApp\plugins\cordova-plugin-fcm\scripts\fcm_config_files_process.js - 找到第80行的
stream.write()调用,将参数强制转为字符串类型,比如修改为:
确保传递给stream.write(String(yourVariable))write()的参数是字符串或Buffer类型。
3. 验证Android模拟器可用性
确保模拟器本身可以正常启动,避免因为模拟器问题导致命令无响应:
- 打开Android Studio的AVD Manager,检查已创建的模拟器状态是否为「可用」
- 手动启动模拟器,确认能正常进入系统界面
- 如果模拟器无法启动,尝试创建一个新的模拟器(推荐选择API 28或更低版本,和你的Cordova Android 7.0.0版本兼容)
4. 重新运行命令
完成上述步骤后,执行带详细日志的命令排查问题:
ionic cordova run android --verbose
如果构建流程正常执行,模拟器会自动启动并安装应用。
额外注意事项
- Ionic 3和Cordova 8.0.0、Android 7.0.0的组合是兼容的,但务必保证所有插件版本与当前环境匹配
- 避免同时使用多个Node版本,用nvm切换时要确保终端会话使用的版本一致
内容的提问来源于stack exchange,提问作者zuest




