Mac上Ionic集成cordova-plugin-fcm报错:Invalid data, chunk must be a string or buffer, not object
解决Cordova 8.0.0 + Android 6.4.0添加cordova-plugin-fcm时的「Invalid data, chunk must be a string or buffer, not object」报错
我之前帮不少开发者排查过这个一模一样的错误,结合你的环境配置(Mac、Cordova 8.0.0、Android 6.4.0,仅Android平台,google-services.json已放置在根目录),这个问题大概率是插件版本不兼容、gradle配置冲突,或者google-services.json的处理逻辑出了问题。给你几个针对性的解决步骤,按顺序试试:
1. 降级cordova-plugin-fcm到适配旧版Cordova的版本
Cordova 8.0.0算是比较老的版本了,新版的cordova-plugin-fcm已经不再对它做兼容适配。建议你安装cordova-plugin-fcm@2.1.2这个稳定版本,它在Cordova 8.x环境下表现很好:
# 先卸载已安装的插件(如果之前装过) cordova plugin remove cordova-plugin-fcm # 安装指定兼容版本 cordova plugin add cordova-plugin-fcm@2.1.2
2. 调整google-services.json的放置路径
虽然你把文件放在了项目根目录,但旧版的fcm插件需要把它放到Android平台的指定目录下,同时要确保文件配置正确:
- 复制根目录的
google-services.json到platforms/android/app/src/main/目录下 - 打开文件检查
package_name字段,必须和你config.xml里<widget id="你的项目ID">的内容完全一致,大小写都不能错
3. 修复Gradle依赖版本冲突
Cordova Android 6.4.0默认的gradle版本和fcm插件依赖的Google Services版本不匹配,这会导致处理json文件时出现类型错误。手动修改gradle配置:
- 打开
platforms/android/build.gradle,找到dependencies块,确保google-services的版本是3.2.1(适配旧版Cordova):dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.google.gms:google-services:3.2.1' } - 打开
platforms/android/app/build.gradle,确认文件末尾有这一行,如果没有就加上:apply plugin: 'com.google.gms.google-services'
4. 清理缓存并重新构建项目
旧的构建缓存很可能残留了错误配置,清理后重新构建能解决不少奇怪的问题:
# 清理Cordova构建缓存 cordova clean # 移除并重新添加Android平台(确保平台配置干净) cordova platform remove android cordova platform add android@6.4.0 # 再次安装指定版本的fcm插件 cordova plugin add cordova-plugin-fcm@2.1.2
对了,你提到「最奇怪的是我的项目...」,如果还有其他异常细节(比如之前是否成功装过插件、有没有其他冲突的插件等),可以补充出来,这样能更精准地定位问题。
内容的提问来源于stack exchange,提问作者AppFirl
相关产品推荐
相关产品推荐

