Я пытаюсь добавить push-сообщения своему сервисному работнику и сталкиваюсь с проблемой, которая ускользает от меня с прошлой ночи.
В моем основном HTML-файле у меня есть следующее -
<script>
if('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/service-worker.js', {scope: '/pwa/'}).then(registration => {
console.log('Service Worker Registered: ', registration);
registration.pushManager.subscribe({userVisibleOnly:true});
});
})
}
</script>
Я получаю сообщение «Service Worker Registered» на консоли. Что означает, что регистрация прошла успешно. Chrome, однако, следует за ним следующей строкой, которая ничего не говорит об ошибке -
Uncaught (in promise) DOMException (index):1
Нажатие на (index):1
поднимает меня на верх соответствующей страницы /pwa/
и выделяет <!DOCTYPE html>
.
Это не дает мне какой-либо значимой информации для дальнейшего изучения проблемы.
Буду признателен, если вы поможете мне решить эту проблему. Я вставлю остальную часть своего кода и настройки ниже.
- Внутренний каркас: Laravel.
- Вход в мой webpack.mix.js
const workboxPlugin = require('workbox-webpack-plugin');
mix.webpackConfig({
plugins: [
new workboxPlugin.InjectManifest({
swSrc: 'public/service-worker-offline.js', // more control over the caching
swDest: 'service-worker.js', // the service-worker file name
importsDirectory: 'service-worker-assets' // have a dedicated folder for sw files
})
],
output: {
publicPath: '' // Refer: https://github.com/GoogleChrome/workbox/issues/1534
}
});
Вход в мой service-worker-offline.js
-
workbox.skipWaiting();
workbox.clientsClaim();
// some other entries, followed by
self.addEventListener('push', (event) => {
const title = 'Aha! Push Notifications with Service Worker';
const options = {
'body' : event.data.text()
};
event.waitUntil(self.registration.showNotification(title, options))
});
С нетерпением жду ваших ответов и заранее благодарю за помощь.
Приложение:
Я провел дополнительное расследование и выяснил, что если я сделаю -
Notification.requestPermission().then(function(permission) {
registration.pushManager.subscribe({userVisibleOnly: true});
})
тогда работает push-уведомление; но ошибка все еще остается. Однако ошибка теперь указывает на строку registration.pushManager.subscribe({userVisibleOnly: true});
в JS. Что может быть причиной?