开发者问题收集

为什么我在 Vue js 中尝试从 firebase 检索令牌时出现错误?

2018-06-05
2928

我尝试将 firebase 实现到我的 vue.js 项目中,但在 firebase.messaging.getToken() 上出现错误。这是我的问题的屏幕截图

在此处输入图像描述

错误:

脚本的 MIME 类型不受支持('text/html')。

无法加载资源:net::ERR_INSECURE_RESPONSE

无法获取通知权限。

  • browserErrorMessage : “无法注册 ServiceWorker:脚本的 MIME 类型('text/html')不受支持。”

  • code : “messaging/failed-serviceworker-registration”

  • message : “消息:我们无法注册默认服务工作者。无法注册 ServiceWorker:脚本的 MIME 类型('text/html')不受支持。(messaging/failed-serviceworker-registration)。”

  • stack : “FirebaseError:消息:我们无法注册默认服务工作者。无法注册 ServiceWorker:脚本的 MIME 类型('text/html')不受支持。(messaging/failed-serviceworker-registration)。↵ 在 eval (webpack-internal:///./node_modules/@firebase/messaging/dist/index.esm.js:1950:32)"

这是我的代码。

firebase.messaging().requestPermission().then(function () {
  console.log('Notification permission granted.')
  return firebase.messaging().getToken()
    .then(function (currentToken) {
      console.log(currentToken)
    })
}).catch(function (err) {
  console.log('Unable to get permission to notify.', err)
})

Service Workers

enter image description here

有人知道如何解决这个问题吗?我尝试了很多方法,但还是没能解决。你能帮帮我吗?

谢谢。

1个回答

尝试将文件(或创建文件)“ firebase-messaging-sw.js ”放入 /public 文件夹内

firebase-messaging-sw.js 内复制并粘贴此内容(并更改 YOUR-SENDER-ID ):

// Give the service worker access to Firebase Messaging.
// Note that you can only use Firebase Messaging here, other Firebase libraries
// are not available in the service worker.
importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase-messaging.js');

// Initialize the Firebase app in the service worker by passing in the
// messagingSenderId.
firebase.initializeApp({
  'messagingSenderId': 'YOUR-SENDER-ID'
});

// Retrieve an instance of Firebase Messaging so that it can handle background
// messages.

const messaging = firebase.messaging();

对我有用(使用 React)

Taddis
2018-08-03