Vue3 本地打包启动白屏解决思路!! !

“为什么我访问 http://127.0.0.1:5501/index.html 白屏,删了 index.html 再访问 / 就又活过来了?”
—— 你的项目与 SPA 路由的“宫斗大戏”


一、问题复现

  • 场景

    1. 本地通过 VSCode Live Server(或其他静态服务器)启动了打包后的 Vue3 应用目录(假设为 dist/)。

    2. 访问 http://127.0.0.1:5501/index.html,页面一片空白(白屏)。

    3. 删掉根目录下的 index.html,再次访问 http://127.0.0.1:5501/,页面又瞬间正常渲染了!

  • 本能误区

    • “是不是文件丢了?是不是打包坏了?”

    • 反复打包、重装依赖,也无济于事。


二、幕后黑手:静态挂载 & 路由拦截双重锅

1. 静态服务器挂载顺序

多数本地静态服务器(Live Server、http-server、serve 等)默认会:

  1. 优先寻找请求路径对应的静态文件(如 index.html.js.css 等)。

  2. 若文件存在,则直接返回该文件,不再回退到其它目录。

  3. 若文件不存在,则“fallback”到根目录的 index.html(如果开启了单页应用回退)。

因果分析

  • 当你在项目根目录下也放置了一份 “空白” index.html(比如不小心把源码的空白模板也上传进 dist/),访问 /index.html 时,服务器把它当作静态文件直接返回,就一片白。

  • 删除后,请求 /index.html 找不到后,触发回退,将真正的打包入口 dist/index.html 返回,于是页面正常。

2. Vue Router History 模式“误判”

如果你在项目中使用了 createWebHistory()(History 模式):

  • 访问 http://…/index.html

    • 浏览器加载了文件后,Vue 启动时会把当前 URL 路径 /index.html 当成一个路由去匹配。

    • 由于通常路由表里并没有对应 /index.html 的条目,结果匹配失败,组件不渲染,就白屏了。

  • 访问 http://…/

    • 路径是 /,正好匹配首页组件,应用正常启动。


三、最终解法:规范挂载 & 路由回退

下面以 Nginx 为例,示范如何在生产(或本地模拟生产)环境下正确部署,彻底杜绝“删了才行”的尴尬。

1. Nginx 标准配置

server {listen       80;server_name  your.domain.com;            # 替换成你的域名或 IP# ① 指定根目录为打包输出root   /var/www/myapp;                   # 假设你把 dist 放这里index  index.html;# ② 静态资源走文件系统,开启长缓存location ~* \.(js|css|png|jpg|jpeg|gif|svg|ico|ttf|woff2?)$ {expires    30d;access_log off;}# ③ 单页应用路由回退location / {try_files $uri $uri/ /index.html;}# ④ 全部 404 也返回入口页(可选)error_page 404 /index.html;
}
部署步骤
  1. 打包 & 上传

    npm run build
    scp -r dist/* user@server:/var/www/myapp/
    
  2. 放置配置

    • CentOS:直接放在 /etc/nginx/conf.d/myapp.conf

  3. 测试 & 重载

    sudo nginx -t
    sudo systemctl reload nginx
    

2. VSCode Live Server(本地调试)快速修复

在项目根目录下新建或修改 .vscode/settings.json

{"liveServer.settings.root": "dist"
}

保存后重启 Live Server,即可让它把 dist/ 当作站点根,不再被源码根目录下的文件干扰。


四、补充技巧

  1. 避免手动地址栏写 index.html
    直接访问 / 即可,现代服务器都会自动加载 index.html

  2. Hash 模式降级
    如果你不想配置服务器路由回退,可在 Vue Router 中改为:

    import { createRouter, createWebHashHistory } from 'vue-router'
    const router = createRouter({history: createWebHashHistory(),routes: [ /* ... */ ]
    });
    

    所有 URL 会加上 #/,彻底绕过服务器路由判断。

  3. CI/CD 自动发布
    在打包完成后,结合 GitHub Actions / GitLab CI 自动将 dist/ 同步到服务器或 CDN,避免漏传、错传文件。


五、结语

原来「删除一份文件就能跑起来」背后的真相,既有静态服务器的挂载机制,也有 Vue Router 的路由解析逻辑。掌握了这两点,你就能:

  • 保证打包目录干净、无冗余模板

  • 正确配置服务器根目录和单页应用回退

  • 根据场景灵活切换 History/Hash 模式

从此,无论在本地调试还是在线上发布,都能稳稳启动,再也不用靠“删档”才能爽跑!如果你也碰到过类似诡异白屏,赶紧对照本文排查一遍吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字人(2):数字人技术全景透视(2025演进版)

随着人工智能技术的迅猛发展,数字人技术发展也是一日千里。站在当下,着眼未来,我们一起在回眸透视过去的基础上,一起共同眺望数字人技术的未来。 一、数字人技术体系重构 我们可以用三维定义对数字人技术进行框架重构 维度 技术内涵 典型特征 物理层 人体数字化建模技术 …

小刚说C语言刷题——1035 判断成绩等级

1.题目描述 输入某学生成绩,如果 86分以上(包括 86分)则输出 VERY GOOD ,如果在 60到 85之间的则输出 GOOD (包括 60和 85),小于 60 的则输出 BAD。 输入 输入只有一行,包括 1个整数。 输出 输出只有一行&#xf…

React-在使用map循环数组渲染列表时须指定唯一且稳定值的key

在渲染列表的时候,我们须给组件或者元素分配一个唯一值的key, key是一个特殊的属性,不会最终加在元素上面,也无法通过props.key来获取,仅在react内部使用。react中的key本质是服务于diff算法, 它的默认值是null, 在diff算法过程中…

Zookeeper的通知机制是什么?

大家好,我是锋哥。今天分享关于【Zookeeper的通知机制是什么?】面试题。希望对大家有帮助; Zookeeper的通知机制是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper 的通知机制是其核心特性之一&#xf…

【LangChain实战】构建下一代智能问答系统:从RAG架构到生产级优化

打破传统问答系统的次元壁 当ChatGPT在2022年掀起AI革命时,开发者们很快发现一个残酷现实:通用大模型在专业领域的表现如同拿着地图的盲人,既无法理解企业私有数据,也无法保证事实准确性。这催生了RAG(检索增强生成&a…

UDS中功能寻址可以请求多帧数据嘛?当ECU响应首帧后,诊断仪是通过物理寻址发送流控帧嘛?

文章目录 1. 前言📢1.1 功能寻址是否支持请求多帧数据?1.2 ECU发送首帧(FF)后,诊断仪如何发送流控帧(FC)?1.3 协议依据(ISO 14229-1)1.4 实际应用注意事项总结1. 前言📢 在UDS(Unified Diagnostic Services)协议中,功能寻址与物理寻址的使用规则以及多帧数据传…

PHP异常处理__Throwable

在 PHP 里,Throwable 是一个极为关键的接口,自 PHP 7 起被引入。它为错误和异常处理构建了一个统一的框架。下面会详细介绍 Throwable 的相关内容。 1. 基本概念 Throwable 是 Exception 和 Error 的父接口。在 PHP 7 之前,异常&#xff08…

无需训练的具身导航探索!TRAVEL:零样本视觉语言导航中的检索与对齐

作者: Navid Rajabi, Jana Kosecka 单位:乔治梅森大学计算机科学系 论文标题:TRAVEL: Training-Free Retrieval and Alignment for Vision-and-Language Navigation 论文链接:https://arxiv.org/pdf/2502.07306 主要贡献 提出…

Vue3+Vite+TypeScript+Element Plus开发-22.客制Table组件

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由 -动态增加路由 动态路由-动态删除…

Java读取JSON文件并将其中元素转为JSON对象输出

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Java读取JSON文件并将其中元素转为JSON对象输…

Spring Boot自动配置原理深度解析:从条件注解到spring.factories

大家好!今天我们来深入探讨Spring Boot最神奇的特性之一——自动配置(Auto-configuration)。这个功能让Spring Boot如此受欢迎,因为它大大简化了我们的开发工作。让我们一起来揭开它的神秘面纱吧!👀 🌟 什么是自动配置…

【ELF2学习板】利用OpenMP采用多核并行技术提升FFTW的性能

目录 引言 OpenMP简介 编译OpenMP支持的FFTW库 部署与测试 测试程序 程序部署 测试结果 结语 引言 在前面已经介绍了在ELF2开发板上运行FFTW计算FFT。今天尝试利用RK3588的多核运算能力来加速FFT运算。FFTW利用多核能力可以考虑使用多线程或者OpenMP。今天介绍一下Ope…

2000-2017年各省城市天然气供气总量数据

2000-2017年各省城市天然气供气总量数据 1、时间:2000-2017年 2、来源:国家统计局、能源年鉴 3、指标:行政区划代码、城市、年份、城市天然气供气总量 4、范围:31省 5、指标说明:城市天然气供气总量是指在一定时间…

Hadoop的三大结构及其作用?

Hadoop是一个分布式存储和计算框架,其三大核心组件是HDFS(Hadoop Distributed File System)、YARN(Yet Another Resource Negotiator)和MapReduce。它们各自有着重要的作用,共同构成了Hadoop生态系统的基础…

【AI论文】ColorBench:视觉语言模型能否看到并理解多彩的世界?一个全面的色彩感知、推理和鲁棒性基准测试

摘要:颜色在人类感知中起着重要作用,通常在视觉推理中提供关键线索。 然而,尚不清楚视觉语言模型(VLMs)是否以及如何像人类一样感知、理解和利用颜色。 本文介绍了ColorBench,这是一个精心设计的创新基准&a…

Python番外——常用的包功能讲解和分类组合

目录 1. Web开发框架与工具 2. 数据处理与分析 3. 网络请求与爬虫 4. 异步编程 5. 数据库操作 6. 图像与多媒体处理 7. 语言模型与NLP 8. 安全与加密 9. 配置与工具 10. 其他工具库 11.典型组合场景 此章节主要是记录我所使用的包,以及模块。方便供自己方…

华硕原厂系统枪神9/9p超竟版-WIN11原装开箱出厂系统安装

华硕原厂系统枪神9/9p超竟版-WIN11-24H2-专业工作站版本安装可带F12-ASUSRecovery恢复功能 适用机型: G635LX、G635LW、G835LX、G835LW、G615LW、G615LP、G615LM、G615LH G815LW、G815LP、G815LM、G815LH、G635LR、G835LR、G615LR、G815LR 远程恢复安装&#xff…

拉取windows的docker镜像转到服务器上构建服务镜像

在windows上将拉取ubuntu的docker镜像转到服务器上 1.要求 1.1 要求windows和服务器安装好docker 2.拉取ubuntu镜像到windows(dos操作,可能需要连接到外网) 一旦你选择了一个合适的基础镜像,你可以使用docker pull命令从Docke…

T1结构像+RS-fMRI影像处理过程记录(数据下载+Matlab工具箱+数据处理)

最近需要仿真研究T1结构像RS-fMRI影像融合处理输出目标坐标的路线可行性。就此机会记录下来。 为了完成验证目标处理,首先需要有数据,然后需要准备对应的处理平台和工具箱,进行一系列。那么开始记录~ 前言: 为了基于种子点的功能连…

Nginx-前言

nginx是什么? 轻量级,开源免费的web服务器软件,服务器安装nginx,服务器则成为web服务器 nginx的稳定版版本号: 偶数版本 nginx的相关目录: /etc/nginx/nginx.conf nginx的主配置文件 /etc/nginx/ngi…