Vite 项目在 Hostinger 上部署失败的完整解决方案

1次阅读

Vite 项目在 Hostinger 上部署失败的完整解决方案

Hostinger 不支持直接运行 vite 开发服务器(npm run dev),需通过构建生产版本(npm run build)生成静态资源并正确部署 public/ 目录,确保 laravel 的 @vite 指令能正常读取 manifest.json。

hostinger 不支持直接运行 vite 开发服务器(`npm run dev`);需通过构建生产版本(`npm run build`)生成静态资源并正确部署 `public/` 目录,确保 laravel 的 `@vite` 指令能正常读取 `manifest.json`。

Vite 是一个现代前端构建工具,但它本身不是一个可托管的运行时服务——它不提供长期运行的 http 服务器(如 Node.js 后端),而是一个开发时热更新服务 + 构建时静态资源生成器。Hostinger 的共享主机环境(包括其“wordpress Hosting”或“linux Shared Hosting”套餐)仅支持纯静态文件或 PHP 应用(如 Laravel),且不开放 ssh 或自定义进程管理权限,因此你无法在 Hostinger 上持续运行 npm run dev 或 vite 命令。

✅ 正确做法是:使用 Vite 构建生产包,将生成的静态资源集成进 Laravel,并完整部署 public/ 目录

1. 确保 Vite 配置兼容 Laravel

Laravel 默认已集成 Vite 支持(≥ v9.19)。检查 vite.config.js 是否包含 Laravel 插件配置:

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,     }),   ], });

该配置会确保构建后生成 public/build/manifest.json 和带哈希的资源文件(如 build/assets/app-abc123.js)。

2. 执行生产构建(关键步骤)

在本地项目根目录运行:

npm run build # 或 yarn build # 或(若使用 pnpm) pnpm build

✅ 此命令会:

  • 编译并压缩所有 JS/CSS;
  • 生成带内容哈希的文件名(防缓存);
  • 输出 public/build/ 目录及 public/build/manifest.json(Laravel 依赖此文件解析资源路径)。

⚠️ 注意:不要上传 node_modules/、src/、resources/ 等源码目录 —— Hostinger 只需要 public/(含 index.php)和 .env(若需)。

3. 部署到 Hostinger 的正确方式

  • 使用 FTP / File Manager 上传整个 public/ 目录内容(非 public 文件夹本身)到 Hostinger 的网站根目录(通常是 public_html/ 或子域名对应目录);
  • 确保 public_html/index.php 存在且为 Laravel 入口;
  • 确保 public_html/build/ 目录完整存在,且内含 manifest.json 和 assets/ 子目录;
  • 若使用 .env,请手动配置数据库、APP_KEY 等(Hostinger 控制台可能提供环境变量设置入口,但更推荐直接编辑 .env 并设为 644 权限)。

4. 验证 @vite 是否生效

在 Laravel Blade 模板中(如 resources/views/app.blade.php),应使用标准指令:

@vite(['resources/css/app.css', 'resources/js/app.js'])

Laravel 运行时会自动读取 public/build/manifest.json,将其映射为带哈希的 <script> 和 <link> 标签。若部署后页面空白或报 404,请检查:</script>

  • public/build/manifest.json 是否存在且 JSON 格式合法;
  • 浏览器开发者工具 Network 面板中,/build/assets/xxx.js 是否返回 200;
  • Hostinger 是否启用了“Hotlink Protection”等可能拦截 /build/ 路径的规则(如有,请临时关闭测试)。

总结

场景 是否可行 说明
npm run dev 在 Hostinger 上运行 ❌ 不可行 无 SSH、无后台进程权限,且 Vite Dev Server 非生产就绪
npm run build + 部署 public/ ✅ 唯一推荐方案 符合共享主机约束,安全、稳定、符合 Laravel 官方部署范式
使用 Vite 预编译 SSR 或插件(如 @vitejs/plugin-react-swc) ✅ 可用 只要最终输出仍是静态资源,不影响部署

简言之:Vite 在 Hostinger 上不是“运行”,而是“构建后交付”。丢掉开发服务器幻想,拥抱静态产物部署,才是通往成功的最短路径。

text=ZqhQzanResources