首页 > 解决方案 > 使用 Flask 和 PythonAnywhere 路由到 Service-Worker

问题描述

我是烧瓶的新手,正在构建我的第一个网络应用程序。从 localhost 运行时,我的服务人员注册良好,但是当我将应用程序部署到 pythonanywhere 时。要构建它,请遵循www.flaskpwa.com上的过程。这是我得到的:

  1. 我的 sw.js 文件位于静态文件夹中。

  2. 我有一条为服务工作者 js 文件提供服务的路线:

    @app.route('/sw.js') def sw(): return app.send_static_file('sw.js')

  3. 在我的 PythonAnywhere“Web”页面上,我有一个名为 /static/ 的静态文件路径,指向静态文件夹。

  4. 我的 app.js 文件正在使用以下方法注册服务人员:

    navigator.serviceWorker.register('./sw.js')

加载我的网络应用程序时,我的控制台返回以下两个错误:

获取脚本时收到错误的 HTTP 响应代码 (404)。

无法注册服务工作者。TypeError:无法使用脚本('https://xxxxx.pythonanywhere.com/sw.js')为范围('https://xxxxx.pythonanywhere.com/')注册 ServiceWorker:错误的 HTTP 响应代码(404 ) 在获取脚本时收到。

我很确定我的问题出在 Flask 路由上,因为我在尝试从浏览器指向 xxxxx.pythonanywhere.com/sw.js 时遇到相同的 404 错误。我一直在努力纠正这一点。

感谢您的输入。

标签: flaskservice-workerpythonanywhere

解决方案


如果您在尝试https://xxxxx.pythonanywhere.com/sw.js从浏览器访问时收到 404 错误,那么这不是您的 Flask 路由 - 这是您的静态路由。如果您有一个将“URL”设置为的静态文件映射,/static那么它只会接收以https://xxxxx.pythonanywhere.com/static.

如果您想专门为文件设置静态路由,sw.js并且希望它可以从 访问https://xxxxx.pythonanywhere.com/sw.js,那么您需要设置一个静态文件映射,其“URL”为/sw.js,并且“目录”设置为完整路径文件,例如/home/xxxxx/mysite/static/sw.js.

有关更多详细信息,请查看PythonAnywhere 文档以获取静态文件


推荐阅读