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
相关推荐
汉堡大王952710 分钟前
# AI 终于能"干活"了——Function Calling 完全指南
javascript·人工智能·机器学习
吴声子夜歌18 分钟前
JavaScript——call()、apply()和bind()
开发语言·前端·javascript
小哈猪20 分钟前
CSS Flex 与 Grid:谁才是布局之王?
javascript
leafyyuki25 分钟前
SSE 同域长连接排队问题解析与前端最佳实践
前端·javascript·人工智能
angerdream27 分钟前
最新版vue3+TypeScript开发入门到实战教程之路由详解三
前端·javascript·vue.js
好雨知时节t28 分钟前
sleep 函数在React项目中的运用
javascript
好雨知时节t28 分钟前
关于Scheduler 类,一个并发控制调度器
javascript
xw-busy-code32 分钟前
Prettier 学习笔记
javascript·笔记·学习·prettier
电商API&Tina38 分钟前
电商数据采集API接口||合规优先、稳定高效、数据精准
java·javascript·数据库·python·json
酉鬼女又兒1 小时前
零基础快速入门前端DOM 操作核心知识与实战解析(完整汇总版)(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯·js