Mar*_*ese 8 javascript python flask es6-modules
我有一个可用的 Flask 应用程序,我正在尝试重构它以使用 ES6 导入。我不需要它在旧浏览器上运行,而 ES6 导入无需转译即可在现代浏览器中运行,对吗?
我目前只是通过 Flask 的内置服务器运行它。生产应用程序是通过 gevent 提供的,但我显然还没有进行这些更改。
以下是我迄今为止尝试过的。我哪里错了?
视图.py
@app.route('/home')
def serve_home():
return render_template('home.html')
Run Code Online (Sandbox Code Playgroud)
格式化.js
export function formatNumber(...) {
...
}
Run Code Online (Sandbox Code Playgroud)
主页.html
<script type="text/javascript" src="/static/js/main.js"></script>
Run Code Online (Sandbox Code Playgroud)
主文件
import {formatNumber} from "/static/js/formatting.js";
Run Code Online (Sandbox Code Playgroud)
错误(main.js,第 1 行)
未捕获的语法错误:意外的标记 {
主页.html
<script type="module" src="/static/js/main.js"></script>
Run Code Online (Sandbox Code Playgroud)
错误(main.js,第 1 行)
加载模块脚本失败:服务器以“text/plain”的非 JavaScript MIME 类型响应。每个 HTML 规范对模块脚本执行严格的 MIME 类型检查。
主页.html
<script type="module" src="/static/js/main.mjs"></script>
Run Code Online (Sandbox Code Playgroud)
主文件
import {formatNumber} from "/static/js/formatting.mjs";
Run Code Online (Sandbox Code Playgroud)
错误(main.mjs,第 1 行)
加载模块脚本失败:服务器以“application/octet-stream”的非 JavaScript MIME 类型响应。每个 HTML 规范对模块脚本执行严格的 MIME 类型检查。
对于那些收到错误的人:
The server responded with a non-JavaScript MIME type [...]
Run Code Online (Sandbox Code Playgroud)
...您需要确认 python 正在返回您的 JS 文件的预期 mimetype。
>>> import mimetypes
>>> mimetypes.guess_type("notExists.js")
('text/javascript', None)
Run Code Online (Sandbox Code Playgroud)
对于我自己,使用 Windows 平台来托管来自(例如 Flask 的开发服务器)的 Web 服务器,我发现我需要更新注册表以将文件扩展名与text/javascript.
例如,在注册表编辑器中:
.js(.mjs如果使用)text/javascript, NOT text/plain, or application/octet-stream, 等等。这对我有用:
import mimetypes
mimetypes.add_type('application/javascript', '.mjs')
Run Code Online (Sandbox Code Playgroud)
在启动 Flask 之前添加此代码
我很确定您需要使用 webpack 和 babel 来转译您的代码。
Flask 有一个可能有用的 webpack 插件https://pypi.org/project/Flask-Webpack/ https://github.com/nickjj/flask-webpack
您还可以按照此https://itnext.io/a-template-for-creating-a-full-stack-web-application-with-flask-npm-webpack-and-reactjs-be2294b111bd或https://codeburst .io/creating-a-full-stack-web-application-with-python-npm-webpack-and-react-8925800503d9教程。忽略关于react的部分
这篇文章ES6 build chain python backend (flask) not SPA似乎也与您的类似。
| 归档时间: |
|
| 查看次数: |
6461 次 |
| 最近记录: |