在 Django 中注册 Service Worker

Cin*_*eng 5 django service-worker

我正在尝试在 django 中注册 Service Worker 但出现此错误

DOMException:无法注册 ServiceWorker:脚本资源位于重定向后面,这是不允许的。

我的项目结构是

src/
   templates/sw.js
   static/js/main.js  #file where I register service worker
Run Code Online (Sandbox Code Playgroud)

main.js

if ('serviceWorker' in navigator) {
        navigator.serviceWorker
            .register('sw.js', {scope: '/'})
            .then(function(reg) {
                console.log('Achieng Service worker Registration worked!');
            })
            .catch(function(error) {
                console.log(error);
            });

    }
Run Code Online (Sandbox Code Playgroud)

根据这个django-service worker,我将我的网址定义为

path('sw.js/', (TemplateView.as_view(template_name="sw.js", content_type='application/javascript', )), name='sw.js'),

并将我的 sw.js 放在 templates 文件夹中。

我可能会错过什么?我希望服务人员有一个默认范围“/”

knb*_*nbk 5

您的服务人员的服务地点为/sw.js/。Django 自动重定向/sw.js/sw.js/. 要使其工作,您只需删除 中的尾部斜杠即可path()

Django 中的约定是在每个 url 中使用尾部斜杠,但像这样的情况是例外。