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
相关推荐
来自星星的猫教授7 分钟前
Vue 3.6前瞻:响应式性能革命与Vapor模式展望
前端·javascript·vue.js
涵信10 分钟前
第九节 高频代码题-实现Sleep函数(异步控制)
前端·javascript·typescript
爱学习的茄子35 分钟前
【前端实战】三分钟掌握原生JS电影搜索应用,从此告别框架依赖
前端·javascript·深度学习
用户38022585982441 分钟前
Vue3源码解析:深度解读ref实现源码
vue.js
时光足迹1 小时前
电子书阅读器之章节拆分
前端·javascript·react.js
WILLF1 小时前
【JavaScript】原型与原型链
javascript
Chuck1sn1 小时前
我把 Cursor AI 整合到 Ruoyi 中,从此让 Java 脚手架脱离人工!
java·vue.js·后端
一只叫煤球的猫1 小时前
1200行代码的前端组件?这套拆分套路让代码从此优雅
前端·vue.js·性能优化
涵信1 小时前
第八节 工程化与高级特性-模块与命名空间的选择
前端·javascript·typescript
武昌库里写JAVA1 小时前
IDE(集成开发环境),集成阿里云的通义大模型
vue.js·spring boot·毕业设计·layui·课程设计