Laravel Vite无法修改__vite_ping请求base url问题咨询
问题原因
开发模式下laravel-vite-plugin会强制覆盖Vite原生的base配置项,优先读取Laravel侧的环境变量生成资源路径,这就是你调试时看到base始终为/、手动修改配置不生效的核心原因。__vite_ping是插件用来检测Vite开发服务存活状态的内置接口,它的请求地址完全由插件逻辑生成,不受vite.config.js里手动设置的base参数控制。你遇到的请求打到https://server.test/__vite_ping的问题,本质是插件默认读取了Laravel的APP_URL/ASSET_URL配置拼接地址,没有识别到你本地的Vite开发服务端口。
解决方案
按以下步骤配置即可:
1. 显式指定Vite开发服务器地址
两种方式二选一即可,推荐优先用环境变量配置,适配多环境场景:
- 方式一:修改Laravel根目录的
.env文件,添加以下配置
# 本地开发时指定Vite服务地址 VITE_DEV_SERVER_URL=https://localhost:3000 ASSET_URL=https://localhost:3000
注意:生产环境请删除这两项配置,
ASSET_URL生产环境应填写实际的静态资源CDN/站点域名。
- 方式二:直接在vite.config.js中给laravel插件传固定配置,适合固定本地开发场景
修改你的laravel()插件配置项,添加dev_server_url参数:
plugins: [ laravel({ input: [ 'resources/css/app.css', 'resources/js/app.js', ], refresh: true, // 显式声明开发服务器地址,跳过插件自动拼接逻辑 dev_server_url: 'https://localhost:3000', }), ],
2. 调整Nginx路由规则
避免Nginx把Vite相关的开发请求转发到Laravel应用,在Nginx的站点配置中添加路径排除规则:
location ~ ^/(?!__vite|@vite|build) { try_files $uri $uri/ /index.php?$query_string; }
配置完成后重载Nginx:nginx -s reload
3. 清缓存重启服务
执行以下命令清空Laravel缓存,再重启Vite开发服务即可生效:
php artisan config:clear php artisan cache:clear npm run dev
验证
重启服务后打开浏览器控制台,查看网络请求可以看到__vite_ping已经正确请求https://localhost:3000/__vite_ping,此时再执行vite -d调试也能看到base参数已经正确读取为你设置的开发服务地址。
内容的提问来源于stack exchange,提问作者Andrius Solopovas
相关产品推荐
相关产品推荐

