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
相关推荐
蚊道人2 小时前
Nuxt 4 学习文档
前端·vue.js
Web - Anonymous2 小时前
使用Vue3 + Elementplus + Day.js 实现日期选择器(包括日、周、月、年、自定义) - 附完整示例
前端·javascript·vue.js
冴羽2 小时前
2025 年 HTML 年度调查报告亮点速览!
前端·javascript·html
张元清2 小时前
浏览器硬导航优化:提升用户体验的关键
前端·javascript·面试
xkxnq2 小时前
第二阶段:Vue 组件化开发(第 23天)
前端·javascript·vue.js
廖若星辰LTY2 小时前
网页端获取用户剪贴板内容
javascript
yyf198905252 小时前
Vue.js:现代前端开发的渐进式框架
vue.js
如果你好3 小时前
Vue 3.6 重磅新特性:Vapor Mode 深度解析
vue.js
winfredzhang3 小时前
零基础打造轻量级桌面备忘录:Electron 核心技术实战
前端·javascript·electron·备忘录
大鸡爪3 小时前
《Vue3 组件库搭建指北:pnpm + monorepo + 代码提交规范+ BEM 环境配置》
前端·vue.js