导读:本期聚焦于宋承宪创作的《Vite 项目在 Hostinger 上部署失败怎么办?原因排查与完整解决方案》,敬请观看详情。Vite 项目打包后在 Hostinger 上线时经常踩坑:页面一片空白、资源路径 404、路由刷新报 404、构建命令直接报错退出,这些问题背后往往和 base 路径配置、文件目录结构以及服务器伪静态规则有关。本文围绕部署失败的常见原因逐一排查,讲解如何正确设置 vite.config.js 中的 base 选项、通过 npm run build 生成 dist 目录并上传到 public_html,同时给出 Apache 环境下支持 SPA 路由的 .htaccess 配置写法,并附上 Node 版本不兼容导致构建失败的处理思路,帮助前端项目顺利在 Hostinger 虚拟主机上跑起来。

Vite 凭借极快的冷启动和热更新速度,已经成为前端项目的主流构建工具。但不少人在本地开发一切正常,把项目搬到 Hostinger 虚拟主机上时却状况百出:打包上传后页面一片空白、控制台里全是资源加载失败的红色报错、点进子路由刷新一下就直接 404。这些问题看起来五花八门,其实根源大多集中在三个地方:构建产物的路径配置、上传的目录位置、以及服务器对单页应用路由的支持方式。本文把常见故障逐一拆解,给出可以直接照抄的配置方案。

Vite 项目在 Hostinger 上部署失败怎么办?原因排查与完整解决方案

一、页面空白与资源 404:base 路径配置是第一嫌疑

部署失败最常见的表现是页面打开后一片空白,打开浏览器开发者工具的 Network 面板,能看到 CSS 和 JS 文件全部返回 404。这几乎可以断定是 Vite 的 base 配置出了问题。Vite 默认以根路径 / 作为资源引用前缀,打包后的 index.html 中资源链接会指向 /assets/xxx.js 这样的绝对路径。Hostinger 虚拟主机的网站根目录是 public_html,如果你的项目是部署在主域名下,这个默认配置没问题;但如果部署在子目录或者临时预览域名上,路径就对不上了。

先打开 vite.config.js 检查 base 选项。部署到子目录时,base 必须写成对应的子目录名,并且前后都要带斜杠:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  // 部署到主域名根路径时用 '/'
  // 部署到 https://你的域名/blog 子目录时必须写成 '/blog/'
  base: '/blog/',
  plugins: [vue()],
  build: {
    outDir: 'dist',
    assetsDir: 'assets'
  }
})

修改完配置后,务必重新执行 npm run build,然后把新生成的 dist 目录内容上传。很多人改了配置却忘记重新打包,或者上传的是旧文件,排查半天方向就错了。上传时还有一个细节容易忽略:要把 dist 目录里面的内容上传到 public_html,而不是把 dist 这个文件夹整个丢进去。如果上传成了 public_html/dist/index.html,访问域名时服务器找不到入口文件,同样会报错。

验证方法很简单,直接在浏览器查看页面源代码,检查资源引用是不是指向了正确的路径。如果源码里的 script 标签指向了不存在的前缀,说明 base 没生效,回去检查配置文件是否保存、构建是否重新执行。

二、路由刷新 404:给 SPA 配置 .htaccess 重写规则

第二个高频问题是:首页能正常打开,页面内点击跳转也正常,但一旦在子路由页面按 F5 刷新,或者直接把子路由链接发给别人打开,Hostinger 就返回 404 页面。这不是 bug,而是单页应用的工作机制与服务器行为的冲突。Vue Router 或 React Router 使用 History 模式时,路由完全由前端 JS 控制,服务器上根本不存在 /about、/user/123 这些物理目录。刷新时浏览器把这些路径原样发给服务器,Apache 找不到对应文件自然返回 404。

解决办法是告诉 Apache:凡是找不到的真实文件或目录,一律回退到 index.html,让前端路由接管。Hostinger 虚拟主机默认使用 Apache,支持 .htaccess 文件。在 public_html 目录下创建一个名为 .htaccess 的文件(注意前面有个点,且没有后缀名),写入以下内容:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  # 如果请求的是真实存在的文件或目录,直接放行
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  # 其余请求全部交给 index.html 处理
  RewriteRule . /index.html [L]
</IfModule>

保存后立即刷新测试,一般就能解决。如果仍然 404,进入 Hostinger 的 hPanel 面板,检查 Advanced 部分的 PHP 配置或联系客服确认 mod_rewrite 模块已启用,不过 Hostinger 主机默认都是开启的。另外提醒一点,如果项目部署在子目录,RewriteRule 里的路径要相应调整为 /子目录名/index.html,RewriteBase 也保持一致。

如果你不需要 URL 中带井号的妥协方案,也可以把路由模式改成 hash 模式,URL 会变成 /#/about 的形式,刷新不会请求服务器路径,自然就不会 404。但 hash 模式的 URL 不够美观,也不利于 SEO,正式项目还是推荐配合 .htaccess 使用 History 模式。

三、构建阶段就失败:Node 版本与依赖问题处理

前面两种情况是部署后的表现,还有一种更早的失败:在本地执行 npm run build 时就直接报错,根本生成不了 dist 目录。Vite 5 要求 Node.js 版本不低于 18,Vite 6 要求 20 以上,如果你本机还装着 Node 16 甚至更老的版本,构建时会直接抛出不兼容的错误提示。先在终端执行 node -v 确认版本,过低就去官方站点下载 LTS 版本重新安装。

另一个常见的构建报错是依赖损坏或版本冲突,典型表现是报 ERR_MODULE_NOT_FOUND 或者某个插件的语法错误。处理思路是删掉 node_modules 目录和 package-lock.json,再重新安装:

rm -rf node_modules package-lock.json
npm cache clean --force
npm install
npm run build

这里需要澄清一个容易混淆的概念:Hostinger 虚拟主机上并不需要安装 Node.js 来运行 Vite 项目。Vite 是构建工具,打包产物是纯静态的 HTML、CSS 和 JS 文件,Apache 直接就能伺服,浏览器端运行。Node.js 只在你本地执行构建命令时需要。如果你购买的是 Hostinger 的 VPS,倒是可以用 Node 环境配合 Nginx 反向代理来跑 SSR 项目,但那是另一套部署方案,和虚拟主机上传静态文件的方式完全不同。

四、部署后的收尾检查清单

按前面的步骤处理完,建议再过一遍这份清单,确认没有遗漏。检查 HTTPS 是否开启,在 hPanel 的 Security 部分启用免费 SSL 证书,并确认页面内没有残留的 http 硬编码资源引用,否则浏览器会拦截混合内容。检查 index.html 是否在 public_html 根位置,assets 文件夹里的文件是否完整上传,文件管理器上传大量小文件时偶尔会漏传或传输不完整,可以用 File Manager 的压缩包上传方式:本地把 dist 内容打成 zip,上传后在线解压,速度快也不容易出错。

最后处理缓存问题。改版上线后部分用户可能看到旧页面,可以在 Hostinger 缓存管理里手动清除缓存,或者在 .htaccess 里针对 index.html 禁用缓存、对带哈希的静态资源设置长缓存,这样既保证更新及时,又利用浏览器缓存提升加载速度。按照这套流程走下来,Vite 项目在 Hostinger 上就能稳定运行了。

Vite部署Hostinger主机前端项目上线修改时间:2026-09-15 13:26:39

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260915/57297.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。