如何使用 nuxtjs/pwa 实现后台同步?

Ahm*_*aki 5 progressive-web-apps vuejs2 nuxt.js

我正在尝试通过@nuxt/pwa-module.

这是我在nuxt.config.js文件中的工作箱属性:

workbox: {

    importScripts : [
        'sw-background-sync.js'
    ]

}
Run Code Online (Sandbox Code Playgroud)

plugins/sw-background-sync.js文件内容:

console.log("backsync called")
workbox.routing.registerRoute(
    'https:\/\/example.com\/api\/Survey\/post.*',
    new workbox.strategies.NetworkOnly({
        plugins: [
            new workbox.backgroundSync.Plugin('myQueueName', {
                maxRetentionTime: 24 * 60
            })
        ]
    }),
    'POST'
);
Run Code Online (Sandbox Code Playgroud)

默认情况下,离线缓存应该可以工作,并且工作正常。但是当我取消注释 importScripts 并刷新页面时,我在控制台中收到此错误:

backsync called
workbox-sw.js:1 Uncaught Error: Config must be set before accessing workbox.* modules
    at Proxy.setConfig (workbox-sw.js:1)
    at sw.js:8
Run Code Online (Sandbox Code Playgroud)

任何有关如何使用 nuxtjs 实现 pwa 后台同步的示例都将不胜感激。

非常感谢。

Ahm*_*aki 2

实际上我应该将脚本放在 workboxExtensionsnuxt.config.js 文件的属性内:

workbox: {

    workboxExtensions : '@/plugins/sw-background-sync.js'
}
Run Code Online (Sandbox Code Playgroud)