为了账号安全,请及时绑定邮箱和手机立即绑定

Flask:如何使用 ES6 模块?

Flask:如何使用 ES6 模块?

不负相思意 2021-06-30 10:25:15
我有一个可用的 Flask 应用程序,我正在尝试重构它以使用 ES6 导入。我不需要它在旧浏览器上运行,而 ES6 导入无需转译即可在现代浏览器中运行,对吗?我目前只是通过 Flask 的内置服务器运行它。生产应用程序是通过 gevent 提供的,但我显然还没有进行这些更改。以下是我迄今为止尝试过的。我哪里错了?视图.py@app.route('/home')def serve_home():    return render_template('home.html')格式化.jsexport function formatNumber(...) {  ...}尝试 1主页.html<script type="text/javascript" src="/static/js/main.js"></script>主文件import {formatNumber} from "/static/js/formatting.js";错误(main.js,第 1 行)未捕获的语法错误:意外的标记 {尝试 2将脚本类型更改为“模块”主页.html<script type="module" src="/static/js/main.js"></script>错误(main.js,第 1 行)加载模块脚本失败:服务器以“text/plain”的非 JavaScript MIME 类型响应。每个 HTML 规范对模块脚本执行严格的 MIME 类型检查。尝试 3将两个 Javascript 文件的扩展名分别从“js”更改为“mjs”主页.html<script type="module" src="/static/js/main.mjs"></script>主文件import {formatNumber} from "/static/js/formatting.mjs";错误(main.mjs,第 1 行)加载模块脚本失败:服务器以“application/octet-stream”的非 JavaScript MIME 类型响应。每个 HTML 规范对模块脚本执行严格的 MIME 类型检查。
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

对于那些收到错误的人:


The server responded with a non-JavaScript MIME type [...]

...您需要确认 python 正在返回您的 JS 文件的预期 mimetype。


>>> import mimetypes

>>> mimetypes.guess_type("notExists.js")

('text/javascript', None)

对于我自己,使用 Windows 平台来托管来自(例如 Flask 的开发服务器)的 Web 服务器,我发现我需要更新注册表以将文件扩展名与text/javascript.


例如,在注册表编辑器中:

  1. 在 HKEY_CLASSES_ROOT 下,找到.js.mjs如果使用)

  2. 查看“内容类型”的值。它必须text/javascript, NOT text/plain, or application/octet-stream, 等等。


查看完整回答
反对 回复 2021-07-01
?
12345678_0001

TA贡献1802条经验 获得超5个赞

这对我有用:


import mimetypes

mimetypes.add_type('application/javascript', '.mjs')

在启动烧瓶之前添加了此代码


查看完整回答
反对 回复 2021-07-01
  • 3 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信