flask+Vue(Vite)部署,js文件不能被正确解析解决方案

构建后,浏览器不执行js文件,触发错误Strict MIME type checking is enforced for module scripts per HTML spec.Expected a JavaScript module script but the server responded with a MIME type of "text/plain".​

问题原因

构建后,因为生产环境index.html​文件中<script>​标签使用了type="module"​,而服务器对于js文件的类型返回的是text/plain​,类型不一致,其详细解释可见.mjs 与 .js

解决方案一

手动修改index.562b9b5a.js​文件后缀为.mjs​,并将其对应的文件引用中文件名做相应更改(可能不止限于index.html​文件中)

缺点:麻烦,容易引起其他错误

解决方案二

配置Vite构建时不使用import​,如设置build.target​为edge15​,详细信息见Vite文档

缺点:强行降低版本可能导致构建失败解决方案三(推荐)

对js文件更改响应头,在flask中插入代码

复制代码
#更改js文件的返回头
@app.after_request
def changeHeader(response):
    disposition = response.get_wsgi_headers('environ').get(
        'Content-Disposition')  or ''#获取返回头文件名描述,如'inline; filename=index.562b9b5a.js'
    if disposition.rfind('.js') == len(disposition) - 3:
        response.mimetype = 'application/javascript'
    return response
相关推荐
摘星编程几秒前
OpenHarmony环境下React Native:hitSlop热区扩展配置
javascript·react native·react.js
css趣多多27 分钟前
动态路由,路由重置,常量路由,$ref,表单验证流程
开发语言·javascript·ecmascript
浪潮IT馆32 分钟前
在 VSCode 中调试 JavaScript 的 Jest 测试用例
javascript·ide·vscode
Y淑滢潇潇42 分钟前
WEB 作业 即时内容发布前端交互案例
前端·javascript·交互
比特森林探险记1 小时前
后端开发者快速入门react
开发语言·前端·javascript
一起养小猫1 小时前
Flutter for OpenHarmony 实战:ListView与GridView滚动列表完全指南
开发语言·javascript·flutter
熊猫钓鱼>_>1 小时前
从零到一:打造“抗造” Electron 录屏神器的故事
前端·javascript·ffmpeg·electron·node·录屏·record
我是伪码农1 小时前
Vue 1.28
前端·javascript·vue.js
鹓于2 小时前
Excel一键生成炫彩二维码
开发语言·前端·javascript
siwangdexie_new2 小时前
html格式字符串转word文档,前端插件( html-docx-js )遇到兼容问题的解决过程
前端·javascript·html