Не удалось выполнить importScripts на WorkerGlobalScope - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь включить уведомление OneSignal в своем приложении pwa nuxtjs.

modules: [
    '@nuxtjs/axios',
    '@nuxtjs/onesignal',
    '@nuxtjs/pwa',
  ],

  oneSignal: {
    cdn: true,
    OneSignalSDK: 'https://cdn.onesignal.com/sdks/OneSignalSDK.js',
    init: {
      appId: 'xxxxxxxxxxx',
      allowLocalhostAsSecureOrigin: true,
      welcomeNotification: {
          disable: true
      }
    }
  },
  workbox: {
    dev: true,
    debug: true
  },

Я получаю всплывающее уведомление, и когда я нажимаю Accept, возникает следующая ошибка:

При получении неверного кода ответа HTTP (404)сценарий.sw.js? 1557093232129: 1 Uncaught DOMException: не удалось выполнить

'importScripts' для 'WorkerGlobalScope': не удалось загрузить сценарий в 'http://localhost:3333/_nuxt/workbox.dev.4c4f5ca6.js'.в http://localhost:3333/sw.js?1557093232129:1:1 в http://localhost:3333/OneSignalSDKWorker.js?appId=xxxxxxxx:1:1 (анонимный) @ sw.js? 1557093232129: 1

ServiceWorkerManager.js: 371 [Установка работника службы] Ошибка установки работника службы Ошибка типа: ошибка регистрацииОшибка выполнения сценария ServiceWorker: ServiceWorker

У меня также есть файл sw.js в статической папке.В разделе проблем Github обнаружены похожие проблемы, но реальных решений нет.

1 Ответ

1 голос
/ 08 июня 2019

Наши работники сервиса OneSignalSDKWorker.js и OneSignalSDKUpdaterWorker.js перезаписывают других работников сервиса, которые зарегистрированы в самой верхней области (корневой каталог сайта) работника сервиса.Решение состоит в том, чтобы объединить все другие сценарии работника сервиса с нашими скриптами работника сервиса, используя importScripts (), и зарегистрировать объединенный работник сервиса вместо исходного работника.

Оба файла OneSignalSDKWorker.js и OneSignalSDKUpdaterWorker.js содержат следующий код:

importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');

Пожалуйста, измените и OneSignalSDKWorker.js, и OneSignalSDKUpdaterWorker.js, чтобы импортировать другие сценарии работника службы, например:

importScripts('https://example.com/sw.js');
importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');

Мы рекомендуем использовать вышеупомянутый подход вместо импорта нашего работника службыв другой файл, поскольку наш веб-SDK заменяет других работников, зарегистрированных в корневой области.

Кроме того, обязательно измените код своего сайта, чтобы зарегистрировать OneSignalSDKWorker.js вместо своего собственного работника.Вы можете сделать это с помощью кода:

navigator.serviceWorker.register('/OneSignalSDKWorker.js');

Информация о работники сферы обслуживания

...