Laravel 9部署无SSH共享主机时出现Vite manifest未找到错误求助
确认本地构建产物完整上传
本地执行npm run build后,项目public/build目录会生成manifest.json及js、css等静态资源文件,需将整个build文件夹完整上传至服务器的public_html/build目录,不要遗漏任何文件。检查FileZilla的上传设置,避免隐藏文件或大文件被误过滤。修正Vite资源路径配置
打开本地项目的vite.config.js,修改base配置项适配共享主机路径:若项目部署在域名根目录,设置base: '/';若为子目录(如public_html/laravel-app),则设置base: '/laravel-app/'。示例配置:import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.js'], refresh: true, }), ], base: '/', // 根据实际部署路径调整 });修改后重新执行
npm run build,将新生成的public/build文件夹上传至服务器覆盖旧文件。调整服务器index.php的路径指向
在服务器的public_html/index.php开头添加以下代码,强制Laravel将public_html识别为公共目录,确保Vite能正确定位build文件夹:$app->bind('path.public', function() { return __DIR__; });同时确认视图中
@vite指令或Vite::asset()生成的资源路径与服务器public_html/build的位置匹配。清除缓存
本地执行php artisan cache:clear、php artisan config:clear后重新构建上传;服务器端若开启OPcache,可在CPanel的PHP设置中重启OPcache;浏览器按Ctrl+Shift+R强制刷新,避免加载旧缓存的资源路径。备选方案:切换至Laravel Mix构建
若Vite路径问题无法解决,可降级使用兼容性更强的Laravel Mix:- 安装依赖:
npm install laravel-mix --save-dev - 根目录创建
webpack.mix.js:const mix = require('laravel-mix'); mix.js('resources/js/app.js', 'public/js') .postCss('resources/css/app.css', 'public/css'); - 修改
package.json的scripts:"scripts": { "dev": "mix", "build": "mix build" } - 执行
npm run build生成public/js和public/css文件夹,上传至服务器对应目录,将视图中的@vite指令替换为普通的<script>、<link>标签加载资源。
- 安装依赖:
内容的提问来源于stack exchange,提问作者B R

