flask - 使用 Flask 和 PythonAnywhere 路由到 Service-Worker
问题描述
我是烧瓶的新手,正在构建我的第一个网络应用程序。从 localhost 运行时,我的服务人员注册良好,但是当我将应用程序部署到 pythonanywhere 时。要构建它,请遵循www.flaskpwa.com上的过程。这是我得到的:
我的 sw.js 文件位于静态文件夹中。
我有一条为服务工作者 js 文件提供服务的路线:
@app.route('/sw.js') def sw(): return app.send_static_file('sw.js')
在我的 PythonAnywhere“Web”页面上,我有一个名为 /static/ 的静态文件路径,指向静态文件夹。
我的 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 错误。我一直在努力纠正这一点。
感谢您的输入。
解决方案
如果您在尝试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 文档以获取静态文件。
推荐阅读
- c# - TextChanged 事件触发但不在后面的代码中运行
- node.js - 如何使我的节点快速页面对每个新用户都是唯一的
- python-3.x - 将列中的值估算为其他列中的基础值和条件
- php - 致命错误:未捕获的 PDOException:SQLSTATE [HY093]:无效的参数号:绑定变量的数量与中的标记数量不匹配
- python - 如何定义将字符串拆分为单独行的函数?
- regex - regexr.com 与 regex101.com
- linux - Linux环境下如何设置变量
- java - I/O 系统上下文中的“抽象”
- reactjs - 语义 UI React 侧边栏可推送
- javascript - 如何使用先前执行的jquery事件的返回数据触发另一个jquery事件