Наше приложение обслуживается (IIS в виртуальном приложении) от https://myserver.com/myapp
HTML-код, возвращаемый https://myserver.com/myapp:
<html>
<!-- This file is served as a virtual application from https://myserver.com/myapp-->
<head>
<script src="/myapp/file.js"></script>
</head>
<body>
</body>
Чтобы зарегистрировать сервис-работника, мне нужно добавить подпапку, как показано ниже
// This does not work since the app is served from /myapp
navigator.serviceWorker.register("/sw.js") // Fail, will try loading https://myServer.com/sw.js
// This works (registration successful)
navigator.serviceWorker.register("/myapp/sw.js") // This will register the sw.
Проблема возникает, когда я пытаюсь использовать серверную программу, которая ожидает события готовности:
// Inside of file.js
navigator.serviceWorker.ready.then(...) // Will not fire
Я предполагаю, что происходит то, что готовое событие не запускается, потому что работник сервиса «думает», что он установлен из подпапки с именем «MyApp», но когда файл file.js запускается и пытается использовать сервер работника, он выглядит как файл .js обслуживается из корня и, таким образом, выходит за рамки работы с серверами.
Есть идеи, как с этим справиться? Я попытался использовать параметр scope, но я думаю, что он используется только для ограничения области, а не для ее расширения.
{ scope: '/' } // Will fail with outside root error
{ scope: '/MyApp' } // Works, but still no ready event
Я уверен, что здесь что-то упущено, но я понятия не имею, что это такое.