Laravel Inertia @vite生产环境热重载异常:hot文件触发模式切换问题
Laravel public/hot 文件问题解答
这是正常机制吗?属于Bug吗?
这不属于Bug,是Laravel配套前端构建工具(Mix或Vite)的正常设计。public/hot文件是开发环境热重载功能的标识文件:当它存在时,框架会优先尝试连接开发服务器的热重载URL,并切换到开发模式的资源加载逻辑。
执行npm run build后确实应该进入生产模式,正常情况下构建工具会自动清理hot文件,但如果因为构建中断、工具版本兼容等异常情况导致文件未被删除,就会出现生产环境误触发开发模式逻辑的问题。
自动化处理方案
- 修改package.json的build命令
在构建命令后追加删除hot文件的操作,确保构建完成后自动清理:- Linux/macOS环境:
(如果用的是Laravel Mix,把"scripts": { "build": "vite build && rm -f public/hot" }vite build换成npm run prod即可) - Windows环境:
"scripts": { "build": "vite build && del public\\hot" }
- Linux/macOS环境:
- 部署脚本中添加清理步骤
不管是用CI/CD流水线还是手动部署脚本,在部署完成后执行清理命令:- Linux/macOS:
rm -f public/hot - Windows:
del public\hot
- Linux/macOS:
- Laravel服务端自动清理
在app/Providers/AppServiceProvider.php的boot方法中添加判断,生产环境启动时自动删除hot文件:public function boot() { if (app()->environment('production') && file_exists(public_path('hot'))) { unlink(public_path('hot')); } }
关于你遇到的网站异常情况
你碰到的网站显示Laravel默认页面的问题,核心原因就是hot文件残留:生产环境下框架检测到该文件后,尝试加载开发服务器的资源,但生产环境没有运行开发热重载服务,导致资源加载失败,最终 fallback 到默认页面。
内容的提问来源于stack exchange,提问作者Sefa Dedeoglu
相关产品推荐
相关产品推荐

