如何让Vite通过Homestead正确提供静态资源服务?
解决方法
1. 端口映射不匹配
报错里的端口是5174,但你只在Homestead里映射了5173。Vite会自动切换到5174如果5173被占用,解决方法二选一:
- 方法A:新增端口映射
在homestead.yaml的ports块里添加5174的映射:
执行ports: - send: 5173 to: 5173 - send: 5174 to: 5174homestead provision让配置生效。 - 方法B:固定Vite端口
在vite.config.js的server配置里强制指定端口为5173:server: { port: 5173, // 新增该行 host: 'my-homestead-url.test', // 其他配置不变 }
2. HTTPS协议不匹配
Homestead开启了ssl: true,但Vite配置里https: false,导致协议冲突。需要同步开启Vite的HTTPS并使用Homestead的证书:
Homestead的SSL证书默认存放在虚拟机的/etc/nginx/ssl,本地对应路径一般是~/.homestead/ssl。修改vite.config.js:
server: { host: 'my-homestead-url.test', https: { key: fs.readFileSync(path.resolve(process.env.HOME, '.homestead/ssl/my-homestead-url.test.key')), cert: fs.readFileSync(path.resolve(process.env.HOME, '.homestead/ssl/my-homestead-url.test.crt')), }, hmr: { host: 'my-homestead-url.test', protocol: 'wss', // HMR也要用wss匹配HTTPS }, },
如果本地没有这个路径,可从虚拟机内复制证书到项目目录,再修改路径。
3. 修正Vite启动命令
不需要加--host 0.0.0.0,因为你已经在vite.config.js里指定了host: 'my-homestead-url.test',直接运行:
npm run dev
4. 验证本地hosts映射
确保本地hosts文件里有正确的IP映射:
192.168.56.12 my-homestead-url.test
5. 清理缓存
- 清空浏览器缓存
- 运行
php artisan view:clear清理Laravel视图缓存 - 重启Vite服务和Homestead虚拟机
内容的提问来源于stack exchange,提问作者user4258956
相关产品推荐
相关产品推荐

