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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:38:34