You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成cordova-plugin-fcm的Ionic Android应用安装运行遇错误求助

解决cordova-plugin-fcm安装/运行时的Promise拒绝错误

嘿,我之前也遇到过一模一样的问题!结合你给出的版本信息,这个错误大概率是旧版cordova-plugin-fcm和你的Cordova/Android版本不兼容导致的——尤其是cordova-android 7.0.0和这款老插件的适配冲突。下面是几个亲测有效的解决办法:

  • 卸载旧插件,改用兼容的维护版FCM插件
    旧版cordova-plugin-fcm已经停止维护,对高版本Cordova的支持很差。推荐替换为活跃维护的fork版本:

    1. 先卸载现有插件:
      cordova plugin remove cordova-plugin-fcm
      
    2. 安装兼容版本:
      cordova plugin add cordova-plugin-fcm-with-dependecy-updated
      

    这个版本修复了大量和Cordova 8.x、cordova-android 7.x的兼容问题,包括你碰到的TypeError: Invalid data, chunk must be a string or buffer, not object错误。

  • 升级Node.js版本
    错误里提到的UnhandledPromiseRejectionWarning和旧版Node.js对Promise的处理机制有关。建议升级到Node.js 12.x LTS版本(别太新,避免和Ionic 3.19.0不兼容),升级后重新安装项目依赖:

    rm -rf node_modules package-lock.json
    npm install
    
  • 清理Cordova缓存与构建文件
    缓存文件损坏也可能导致这类奇怪的错误,执行以下步骤彻底清理:

    ionic cordova platform remove android
    ionic cordova platform add android@7.0.0
    rm -rf node_modules package-lock.json
    npm install
    

    清理完成后再重新安装插件并运行应用。

  • 临时修复Promise拒绝问题(不推荐长期使用)
    如果你暂时不想替换插件,可以添加一个全局的Promise拒绝处理器来避免进程崩溃:
    在项目根目录创建hooks/before_platform_add/00_init_promise.js文件(没有对应文件夹就手动创建),写入以下内容:

    process.on('unhandledRejection', (reason, promise) => {
      console.log('Unhandled Rejection at:', promise, 'reason:', reason);
    });
    

    不过这只是治标不治本,还是建议替换为兼容的插件版本。

错误原因说明

旧版cordova-plugin-fcm没有正确处理异步操作的Promise返回值,而Cordova 8.0.0和cordova-android 7.0.0采用了更严格的Promise处理机制,当插件返回不符合要求的Promise数据时,就会抛出这个类型错误。虽然插件能出现在列表中,但运行时可能存在潜在的功能异常。

内容的提问来源于stack exchange,提问作者FranSto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:37:28