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
相关推荐
风中飘爻1 小时前
JavaScript:BOM编程
开发语言·javascript·ecmascript
清岚_lxn5 小时前
原生SSE实现AI智能问答+Vue3前端打字机流效果
前端·javascript·人工智能·vue·ai问答
萌萌哒草头将军7 小时前
💎这么做,cursor 生成的代码更懂你!💎
javascript·visual studio code·cursor
lauo8 小时前
智体知识库:ai-docs对分布式智体编程语言Poplang和javascript的语法的比较(知识库问答)
开发语言·前端·javascript·分布式·机器人·开源
拉不动的猪8 小时前
设计模式之------单例模式
前端·javascript·面试
lorogy9 小时前
【VSCode配置】运行springboot项目和vue项目
vue.js·spring boot·vscode
YanaDH10 小时前
Quill富文本编辑器支持自定义字体(包括新旧两个版本,支持Windings 2字体)
前端·javascript
刺客-Andy11 小时前
React 第三十节 使用 useState 和 useEffect Hook实现购物车
前端·javascript·react.js
菜鸡且互啄6911 小时前
vxe-table
java·前端·javascript
快起来搬砖了11 小时前
UniApp 页面布局自定义头部导航
前端·javascript·uni-app