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
相关推荐
网络点点滴27 分钟前
Vue3完结- 核心知识总结
vue.js
努力的lpp27 分钟前
【小迪安全第14天:前端JS架构信息打点与API接口枚举】
前端·javascript·安全
前端 贾公子44 分钟前
解决uni-app 输入框,键盘弹起时页面整体上移问题
前端·vue.js·uni-app
源码之家44 分钟前
计算机毕业设计:Python汽车销量智能分析与预测系统 Flask框架 scikit-learn 可视化 requests爬虫 AI 大模型(建议收藏)✅
人工智能·hadoop·python·算法·数据分析·flask·课程设计
南风知我意9571 小时前
Map 与 WeakMap 深度解析:从内存泄漏到 Vue 3 响应式原理的完整指南
前端·javascript·vue.js
github_czy1 小时前
Vue 3 组件生命周期
前端·javascript·vue.js
越甲八千1 小时前
Vue3启动流程和文件结构
前端·javascript·vue.js
独自破碎E1 小时前
Spring Boot + Vue 前后端联调踩坑记录
vue.js·spring boot·后端
榴莲omega1 小时前
第11天:函数组合、记忆化与定时器
开发语言·前端·javascript