Windows/Homestead环境下Laravel Dusk搭配Vite运行失败求助
解决Laravel Dusk + Windows环境Vite热重载超时问题
针对你在Windows 10 Homestead环境下,Laravel 10 + Vue + Vite场景中Dusk测试超时的问题,给出以下可行方案:
1. 让Homestead能访问Windows本地的Vite服务
因为Vite在Windows本地运行,Homestead虚拟机需要能连通这个服务:
- 用
ipconfig命令查看Windows的局域网IP(格式通常为192.168.x.x) - 修改项目根目录的
.env文件,指定Vite开发服务器地址为Windows的IP加端口:VITE_DEV_SERVER_URL=http://192.168.x.x:5173 - 确保Windows防火墙开放Vite默认的5173端口,或者Homestead虚拟机的防火墙允许访问该端口
2. 延长Dusk的页面等待时间
TimeoutException大多是因为Vite热重载的资源加载延迟更高,超出了Dusk默认的等待时长:
- 在测试类的
setUp方法中全局延长等待时间:protected function setUp(): void { parent::setUp(); $this->browse(function (Browser $browser) { $browser->waitFor('body', 30); // 把等待时间调整为30秒 }); } - 也可以在单个测试里针对性等待Vite资源加载完成:
$browser->visit('/') ->waitFor('[data-vite-dev-ready]', 20); // 等待Vite加载完成的标识元素(可自行定义)
3. 配置Vite允许跨域访问
Homestead的请求对Windows的Vite服务属于跨域请求,需要开启跨域支持:
- 修改
vite.config.js,添加服务器配置:export default defineConfig({ server: { host: '0.0.0.0', // 允许外部设备访问Vite服务 cors: true, // 开启跨域 port: 5173 }, // 其他原有配置... }) - 重启Vite服务使配置生效
4. 检查Hosts映射一致性
确保项目的本地域名(如your-app.test)在两个地方都正确映射:
- Windows系统的
C:\Windows\System32\drivers\etc\hosts - Homestead虚拟机内的
/etc/hosts
两者都要将域名指向Homestead的虚拟机IP,避免请求路由混乱。
5. 用--host参数启动Vite
启动Vite时添加--host参数,让服务监听所有网卡:
npm run dev -- --host
这样Homestead就能直接通过Windows的IP访问到Vite热重载服务。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

