部署Hostinger后仅显示h1标签,React组件无法加载求助
解决方案:Hostinger部署后React无法加载至#app容器
先完成Vite生产构建
本地执行npm run build,生成public/build目录,里面是编译后的生产环境JS/CSS文件。必须把这个build目录上传到Hostinger的public文件夹下,不要直接上传源码目录。Hostinger上禁止运行开发环境命令,必须用预构建的资源。修正资源引用方式
你当前在blade里直接引用resources/css/app.css和node_modules里的文件,这在生产环境不可行——resources是源码目录,不会被Hostinger公开访问,node_modules也不会被上传到服务器。
正确做法:在app.jsx里导入CSS文件(比如import './app.css'),让Vite构建时自动处理样式资源;删掉blade里手动写的<link>标签,只保留@viteReactRefresh和@vite('resources/js/app.jsx')即可,Vite会自动注入构建后的资源链接。检查Vite的base路径配置
打开vite.config.js,确认base参数匹配你的部署路径:- 根域名部署:设置
base: '/' - 子目录部署(如
https://xxx.com/myapp):设置base: '/myapp/'
示例配置:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [ laravel({ input: 'resources/js/app.jsx', refresh: true, }), react(), ], base: '/', // 根据实际部署路径调整 });- 根域名部署:设置
确认React挂载代码正确
检查resources/js/app.jsx里的挂载逻辑,确保正确指向#app容器:import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App'; // 你的主React组件 import './app.css'; // 在这里导入样式 const root = ReactDOM.createRoot(document.getElementById('app')); root.render( <React.StrictMode> <App /> </React.StrictMode> );本地先运行
npm run dev测试正常,再构建上传。Hostinger权限与目录设置
- 确保
public/build目录权限为755,文件权限为644,权限错误会导致资源加载失败。 - 在Hostinger面板中,将网站根目录设置为项目的
public文件夹,而非项目根目录。
- 确保
控制台排查错误
打开浏览器F12控制台:- 查看Network标签,确认JS/CSS资源是否返回404(路径错误)
- 查看Console标签,排查语法错误、模块缺失等问题,根据报错信息针对性修复。
内容的提问来源于stack exchange,提问作者Francheska
相关产品推荐
相关产品推荐

