laravel - 启动pushManager.subscribe时未捕获( promise 中)DOMException

标签 laravel service-worker progressive-web-apps laravel-mix service-worker-events

我正在尝试向我的服务人员添加推送消息,但面临着自昨晚以来一直困扰着我的问题。

在我的主 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> .

它没有给我任何有意义的信息来进一步调查该问题。

如果您能指导我解决此问题,我将不胜感激。我将在下面粘贴其余的代码和设置。

  1. 后端框架:Laravel。
  2. 进入我的 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});
                    })

然后推送通知就起作用了;但错误仍然存​​在。但是,错误现在指向 registration.pushManager.subscribe({userVisibleOnly: true}); JS 中的行。可能是什么原因?

最佳答案

DOMException具有并不总是可见的详细信息。捕获 DOMException,并确保将消息记录到控制台。它通常会提供更多信息。就我而言,“注册失败 - 权限被拒绝”消息提醒我,我有 blocked all notifications在我的 Chrome 设置中。

关于laravel - 启动pushManager.subscribe时未捕获( promise 中)DOMException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215921/

相关文章:

laravel - 未定义命令 "serve"(Lumen-Laravel)

javascript - 使用 Dropzone 和 Laravel 上传产品

javascript - Service Worker - 未捕获( promise )TypeError : Failed to fetch

javascript - ServiceWorker 的 TypeScript 类型定义

angular-cli 更新未定义错误的 service-worker id

android - 是否可以在 Progressive Web App 中为 Pixel 设备指定一个圆形图标?

progressive-web-apps - Web App Manifest 未被 Chrome 开发工具解析

php - Laravel - 在 Controller 或模型中查询构建?对于大型网络应用

google-chrome-extension - Service Worker 注册失败。 Chrome 扩展程序

php - 生产服务器上需要哪些 Laravel Elixir 文件?