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

在Bubble.io中运行Firebase Messaging脚本报错:Service messaging不可用

在Bubble.io中解决Firebase Messaging "Service messaging is not available" 报错

报错核心原因

这个错误通常由以下几种情况导致:

  • Firebase核心库与Messaging库版本不兼容
  • 页面未处于HTTPS环境(Firebase Messaging强制要求,localhost调试除外)
  • 缺少必要的Service Worker配置
  • 脚本运行时机过早,页面环境未完全准备完成

解决方案

1. 统一Firebase库版本

你当前代码中firebase/app使用9.6.6版本,firebase/messaging使用9.6.9版本,版本不匹配会引发兼容性问题,将两者改为相同版本:

<script type="importmap">
{
    "imports": {
        "firebase/app": "https://www.gstatic.com/firebasejs/9.6.9/firebase-app.js",
        "firebase/messaging": "https://www.gstatic.com/firebasejs/9.6.9/firebase-messaging.js"
    }
}
</script>

2. 配置并注册Service Worker

Firebase Messaging依赖Service Worker接收推送消息,按以下步骤操作:

  • 创建firebase-messaging-sw.js文件,内容如下:
    importScripts('https://www.gstatic.com/firebasejs/9.6.9/firebase-app-compat.js');
    importScripts('https://www.gstatic.com/firebasejs/9.6.9/firebase-messaging-compat.js');
    
    const firebaseConfig = {
        // 你的Firebase配置信息
    };
    
    firebase.initializeApp(firebaseConfig);
    const messaging = firebase.messaging();
    
  • 将该文件上传到Bubble的Assets(设置→文件)中,获取文件的公开访问链接
  • 在HTML脚本中添加Service Worker注册逻辑:
    <script type="module">
    import { initializeApp } from 'firebase/app';
    import { getMessaging, getToken } from 'firebase/messaging';
    
    const firebaseConfig = {
        // 你的Firebase配置
    };
    
    // 等待页面加载完成后再初始化
    document.addEventListener('DOMContentLoaded', async () => {
        const app = initializeApp(firebaseConfig);
        
        if ('serviceWorker' in navigator) {
            try {
                // 注册Service Worker
                await navigator.serviceWorker.register('你的firebase-messaging-sw.js公开链接');
                const messaging = getMessaging(app);
                
                // 获取推送令牌(需提前在Firebase控制台生成VAPID密钥)
                const token = await getToken(messaging, {
                    vapidKey: '你的Firebase控制台VAPID密钥'
                });
                console.log('推送令牌:', token);
            } catch (error) {
                console.error('初始化失败:', error);
            }
        } else {
            console.error('当前浏览器不支持Service Worker');
        }
    });
    </script>
    

3. 确认HTTPS环境

Firebase Messaging仅允许在HTTPS环境下运行(localhost调试除外),确保你的Bubble页面使用HTTPS链接:Bubble官方域名*.bubbleapps.io默认是HTTPS,自定义域名需配置SSL证书。

4. 检查Firebase项目配置

  • 登录Firebase控制台,进入目标项目→Cloud Messaging
  • 在Web配置中生成并复制VAPID密钥,填入上述代码对应位置
  • 确认Cloud Messaging服务已启用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:35:12