javascript - 无法使用不受支持的 MIME 类型注册 Service Worker
问题描述
我们正在尝试将我们的应用程序(基于 Javascript 运行,无反应,无角度)与 firebase 集成,以支持我们设备上的推送通知。但是当我们尝试注册服务工作者时,我们得到了“不支持的 MIME 类型”。
下面是代码。
索引.html:
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-messaging.js"></script>
var config = {
messagingSenderId: "1234567890"
};
firebase.initializeApp(config);
navigator.serviceWorker.register('./firebase-messaging-sw.js')
.then(function (registration) {
var messaging = firebase.messaging();
messaging.requestPermission().then(function () {
console.log('Notification Permission granted');
messaging.getToken().then(function (currentToken) {
console.log('Firebase token : ', currentToken);
});
}).catch(function(error) {
console.log('Push Message is disallowed');
});
messaging.onMessage(function(payload) {
console.log('Message received. ', payload);
});
}, err => {
console.log('Error while registering', err);
})
firebase-messaging-sw.js:
if('function' === typeof importScripts) {
importScripts('https://www.gstatic.com/firebasejs/5.9.4/firebase-app.js')
importScripts('https://www.gstatic.com/firebasejs/5.9.4/firebase-messaging.js')
var firebaseConfig = {
apiKey: "sdsd",
authDomain: "sdsd",
databaseURL: "sdsd",
projectId: "sdsd",
storageBucket: "sdsd",
messagingSenderId: "1234567890",
appId: "sdsd"
};
var app = firebase.initializeApp(firebaseConfig);
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function (payload) {
return self.registration.showNotification("", {body: payload.data.status});
});
}
index.html、firebase-messaging-sw.js、manifest.json 都在同一个目录下。但 index.html 无法注册服务工作者,我收到“不支持的 MIME 类型”错误。
我看到了一些关于这个错误的帖子,但所有这些帖子都与 react.js 相关,如下所示。
但是我们没有使用 react.js 将 firebase-messaging-sw.js 放在公共目录中。谁能告诉我将文件firebase-messaging-sw.js和manifest.json放在哪里,如何从index.html中的navigator.serviceWorker.register()引用文件来解决这个问题。
解决方案
推荐阅读
- vb.net - 对文件路径进行硬编码时,如何考虑不同的用户配置文件?
- git - 当git历史包含私人信息时如何使源代码开放?
- c# - 用于作业的 Kubernetes 服务帐户
- reactjs - Normalizr Union 缺少嵌套项的 id
- mysql - Node JS MYSQL 查询未运行,但未记录错误
- javascript - HtmlUnit 登录尝试导致我无法通过的奇怪页面。“脚本已禁用。单击提交继续”
- java - 无法加载类但可以导入工作正常
- python - 如何在python中拆分地址?
- r - 在 R 中,我需要将一组数字除以另一列中的特定值,然后通过分组变量重复该操作
- r - 在闪亮中编辑 DT 不会编辑值