Ionic Cordova集成Firebase FCM通知报错求助
解决Ionic集成Firebase FCM时的Promise Rejection错误
我之前也碰到过类似的问题,你这个TypeError: Invalid data, chunk must be a string or buffer, not object错误,主要是cordova-plugin-fcm和Firebase SDK版本不兼容,或者残留依赖导致的,结合你已经降级到Firebase 4.8.0的情况,给你几个针对性的解决步骤:
1. 彻底清理插件与依赖,重新安装指定版本
残留的旧插件文件或依赖缓存很容易搞出问题,按这个流程来:
- 先卸载现有FCM插件:
ionic cordova plugin remove cordova-plugin-fcm - 强制清理npm缓存(比
verify更彻底):npm cache clean --force - 删除
node_modules和package-lock.json:rm -rf node_modules package-lock.json - 重新安装npm依赖:
npm install - 安装和Firebase 4.8.0匹配的FCM插件版本,比如v2.1.0(这个版本和4.8.x SDK兼容性较好):
ionic cordova plugin add cordova-plugin-fcm@2.1.0
2. 再次核对google-services.json的细节
- 确保文件放在项目根目录,并且是从Firebase控制台重新下载的最新版本(有时候旧文件可能有格式问题),打开文件检查JSON语法是否正确,有没有多余的逗号或者缺失的括号。
- 仔细核对
config.xml里的包名和Firebase控制台的包名,包括大小写、后缀,必须完全一致,哪怕一个字符错了都会出问题。
3. 检查Node.js版本
这个错误偶尔也和Node.js版本不兼容有关,建议切换到LTS版本(比如v14.x或v16.x),用nvm管理会很方便:
# 安装LTS版本 nvm install --lts # 切换到该版本 nvm use --lts
切换后再重新执行插件安装命令试试。
4. 考虑替换为维护更活跃的插件
cordova-plugin-fcm已经很久没更新了,官方现在更推荐用cordova-plugin-firebase-messaging,它基于最新Firebase SDK维护,兼容性更好:
- 卸载旧插件:
ionic cordova plugin remove cordova-plugin-fcm - 安装新插件和对应的Ionic Native包:
配置方式和旧插件差不多,但能避免很多版本兼容问题。ionic cordova plugin add cordova-plugin-firebase-messaging npm install @ionic-native/firebase-messaging
你可以按顺序试这些方法,应该能解决这个Promise Rejection的问题。
内容的提问来源于stack exchange,提问作者mba3gar
相关产品推荐
相关产品推荐

