You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Inertia Django Vite至fly.io遇CORS错误的排查与解决

部署Inertia Django Vite Vue模板到fly.io时Vite请求localhost导致CORS空白页问题解决

问题场景

将Inertia Django Vite Vue极简模板部署至fly.io,使用gunicorn作为WSGI服务器。本地运行正常,但部署后页面空白,浏览器报CORS错误,检查页面源码发现Vite相关脚本仍指向localhost:5173。

模板文件index.html代码:

{% load django_vite %}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />

  {% vite_hmr_client %}
  {% vite_asset 'main.ts' %}

  <title>Inertia + Django + Vite + Vue minimal</title>
</head>

<body>
  {% block inertia %}{% endblock %}
</body>

</html>

浏览器解析后生成的关键代码片段:

<script type="module" src="http://localhost:5173/static/@vite/client"></script>
<script type="module" src="http://localhost:5173/static/main.ts"></script>

排查过程

  • 尝试修改Dockerfile和vite.config.ts配置,问题未解决
  • 借助他人帮助完成模板部署,但主项目仍存在相同问题
  • 测试发现将Django的DEBUG设为False时问题消失,进一步排查后定位到DJANGO_VITE_DEV_MODE环境变量

解决方案

将DJANGO_VITE_DEV_MODE设置为False即可解决问题。

原因说明

DJANGO_VITE_DEV_MODE是django-vite库的核心控制变量:

  • 当值为True时,启用开发模式,模板标签会生成指向本地Vite开发服务器(默认localhost:5173)的脚本链接
  • 生产环境部署时必须将该变量设为False,此时django-vite会使用构建后的静态资源路径,而非本地开发服务器地址

内容的提问来源于stack exchange,提问作者Manni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:20:17