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

Firebase Cloud Messaging应用授权通知后出现多个报错寻求解决

修复方案

所有错误都是Firebase 9模块化SDK使用不当导致,按以下步骤修改即可:

1. 修复onTokenRefresh is not defined报错

Firebase 9 模块化版本已经移除了旧版的onTokenRefresh全局API,你也没有从SDK中导入该方法。

修复操作:直接删除index.html中onTokenRefresh(function () { ... })的整段代码即可。FCM新版本会自动维护token有效性,每次调用getToken都会返回最新的有效token,不需要单独监听刷新事件。

2. 修复Cannot read properties of undefined (reading 'vapidKey')报错

你在Notification.requestPermission的回调里调用getToken()没有传入初始化完成的messaging实例,导致方法内部找不到配置的vapidKey。

修复操作:把return getToken();改成return getToken(messaging, { vapidKey: "你自己的真实vapidKey" });,把后续单独写的那段重复的getToken(messaging, { vapidKey: "293kfk" })代码删掉就行,不用重复调用两次getToken。
额外注意:你现在填的293kfk是无效值,要替换成你Firebase控制台「项目设置-云消息传递」里生成的「Web 推送证书」公钥。

3. 修复ServiceWorker注册失败报错

你在firebase-messaging-sw.js里用importScripts加载的是纯模块化版本的Firebase SDK,importScripts不支持加载这种模块化包,要换成compat兼容版本的SDK地址。

修复操作:把firebase-messaging-sw.js开头的三行importScripts替换成:

importScripts('https://www.gstatic.com/firebasejs/9.0.2/firebase-app-compat.js');
importScripts('https://www.gstatic.com/firebasejs/9.0.2/firebase-messaging-compat.js');

额外调整:ServiceWorker里不需要加载analytics SDK,把对应的import和初始化代码删掉就行,避免不必要的加载错误。

4. 其他代码错误修复

index.html中第二个getToken的回调里参数是t,你用了未定义的变量r,改成t即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:45:02