【Vue3+Vite】解决build后空白页的问题

目录

Hash 模式

HTML5 模式(历史模式) 

配置Nginx  

配置Spring Boot 


Hash 模式

build后空白页的问题可能是使用的是历史模式,因为Vue是一个单页的客户端应用,如果没有适当的服务器配置,访问会得到一个 404 错误。使用Hash模式接口解决这个问题,因为使用Hash模式后由于这部分 URL 从未被发送到服务器,所以它不需要在服务器层面上进行任何特殊处理。缺点就是对SEO不友好。

配置: 

import { createRouter, createWebHashHistory } from 'vue-router'

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    //...
  ],
})

HTML5 模式(历史模式) 

import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
  history: createWebHistory(),
  routes: [
    //...
  ],
})

使用这个模式需要另外配置下服务器,你可能会在Nginx中使用或者是Spring Boot中使用。

配置Nginx  

location / {
  try_files $uri $uri/ /index.html;
}
  • location /:指定对根路径 / 的请求处理规则。
  • try_files $uri $uri/ /index.html:尝试按顺序查找和服务文件。
    1. $uri:尝试直接访问请求的 URI 对应的文件。
    2. $uri/:如果第一步找不到文件,尝试将 URI 当作目录处理。
    3. /index.html:如果以上两步都失败,最后尝试服务 index.html 文件。

简而言之,这个配置首先尝试直接响应请求的文件,如果文件不存在则尝试作为目录处理,最后如果都不成功,则显示 index.html。这常用于单页面应用(SPA),确保所有路径最终都指向同一个 HTML 文件。

Nginx官方文档的解释:

Serving Static Content | NGINX Documentation 

配置Spring Boot 

Spring Boot只需要将build后的文件放在resources\static位置下即可。

 添加一个controller:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class RouteController {

    @RequestMapping(value = "/{path:[^\\.]*}")
    public String redirect() {
        return "forward:/index.html";
    }
}

参考:

java - Configure Spring Boot for SPA frontend - Stack Overflow 

这个配置和Nginx配置的作用很相似,都是将不存在的路径请求到index.html。假如你的vue路由配置了一个path为/test,你的spring boot应用也有一个/test的接口,那么会优先访问spring boot中的接口。还有另外一个问题是如果你有嵌套路由,直接在浏览器中输入嵌套路由的请求路径会报错。但不会影响页面当中的嵌套路由跳转。

如果你的spring boot进行了上面的操作后还是没法访问,只需配置拦截器的白名单后即可。如:


👍点赞,你的认可是我创作的动力 !
🌟收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧水务系统在流域水环境规划中起到什么作用?

智慧水务系统在流域水环境规划中扮演着越来越重要的角色。作为一款集信息化、自动化、智能化、智慧化于一体的水务管理系统,智慧水务系统不仅能够提高水环境规划的效率,还能为水资源的保护和利用提供有力支持。 在流域水环境规划中,智慧水务系…

计算机硬件(一)

1.机箱 计算机的许多硬件,如主板,硬盘和电源等,都安放在固定机箱中。机箱是一个相对封闭的空间,箱体一般由钢和铝合金等金属制成(其他材料亦可用,但不多见),同时设有许多通风口,以促进箱内空气流动,防止内部温度过高,机箱的颜色,大小乃至形状…

c++ 中名空间中using 引入的细节

如果在引入名空间中的特定成员函数的时候, 全局不能定义同名的函数,但是其实只要参数不同就行 namespace a{int x 1;int fun(){return 0;} }using namespace a; using a::fun;void fun(int x) {} int x 10; int main() {fun(10); } 上面就是一个正确…

TZOJ 1378 发工资咯

答案&#xff1a; #include<stdio.h> int main() {int n 0, m 0, i 0, sum 0;while (scanf("%d", &n) && n ! 0) //多组数据输入并且不等于0{for (i 0; i < n; i) //有n名老师就循环n次{scanf("%d", &m); //该名老…

rabbitMQ对消息不可达处理-备份交换机/备份队列

生产者发送消息&#xff0c;在消息不可达指定队列时&#xff0c;可以借助扇出类型交换机&#xff08;之前写过消息回退的处理方案&#xff0c;扇出交换机处理的方案优先级高于消息回退&#xff09;处理不可达消息&#xff0c;然后放置一个备份队列&#xff0c;供消费者处理不可…

解压压缩包脚本

解压压缩包脚本 我们一般解压一个压缩包&#xff0c;需要三步&#xff1a; 1、打开压缩包。 2、点击解压文件。 3、选择解压目录解压到指定文件夹。 那么&#xff0c;怎么一步完成这些繁琐的操作呢&#xff1f;编写一个bat脚本即可&#xff0c;如下所示&#xff1a; 1、安装解压…

【人工智能Ⅰ】实验5:AI实验箱应用之贝叶斯

实验5 AI实验箱应用之贝叶斯 一、实验目的 1. 用实验箱的摄像头拍摄方块上数字的图片&#xff0c;在图像处理的基础上&#xff0c;应用贝叶斯方法识别图像中的数字并进行分类。 二、实验内容和步骤 1. 应用实验箱机械手臂上的摄像头拍摄图像&#xff1b; 2. Opencv处理图像…

Wish防关联是什么?Wish要怎样避免违规封店?

四大跨境电商平台之一wish&#xff0c;做跨境电商的很多人可能都听过wish。随着wish不断完善平台制度&#xff0c;对于多账号运营的卖家要求越来越严厉&#xff0c;wish和亚马逊、eBay等其它跨境电商平台一样&#xff0c;不支持一个卖家开设多个账号多家店铺。 但是对于各位卖家…

2023/11/24JAVAweb学习(Vue常用指令,Vue.js文件,Ajax,Axios两种请求,Vue-cli脚手架,Vue项目,Element)

age只会执行成立的,show其实都展示了,通过display不展示 使用Vue,必须引入Vue.js文件 假如运行报错,以管理员身份打开vscode,再运行 ------------------------------------------------------------------- 更改端口号

2023/11/30JAVAweb学习

数组json形式 想切换实现类,只需要只在你需要的类上添加 Component 如果在同一层,可以更改扫描范围,但是不推荐这种方法 注入时存在多个同类型bean解决方式

C语言——多种方式打印出1000之内的所有的“水仙花数”

所谓水仙花数,是指一个3位数,其各位数字立方和等于该数本身。水仙花数是指一个三位数&#xff0c;它的每个位上的数字的立方和等于它本身。例如&#xff0c;153是一个水仙花数&#xff0c;因为1^3 5^3 3^3 153。 方法一 #define _CRT_SECURE_NO_WARNINGS 1#include <std…

制造业如何做生产设备管理、分析生产数据?

本文将为大家讲解&#xff1a;1、设备管理的现状与问题&#xff1b;2、设备管理系统功能&#xff1b;3、制造业企业如何做生产设备管理、分析生产数据&#xff1f;4、制造业设备管理的价值。 想要管理好设备&#xff0c;设备档案管理、巡检、报修、保养、分析预警等问题都是必须…

Python list列表添加元素的3种方法及删除元素的3种方法

Python list列表添加元素的3种方法 Python list 列表增加元素可调用列表的 append() 方法&#xff0c;该方法会把传入的参数追加到列表的最后面。 append() 方法既可接收单个值&#xff0c;也可接收元组、列表等&#xff0c;但该方法只是把元组、列表当成单个元素&#xff0c;这…

解决电脑蓝屏问题:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED,回到系统还原点

解决电脑蓝屏问题&#xff1a;SYSTEM_THREAD_EXCEPTION_NOT_HANDLED&#xff0c;回到系统还原点 1&#xff0c;蓝屏显示问题1.1&#xff0c;蓝屏1&#xff0c;清楚显示1.2&#xff0c;蓝屏2&#xff0c;模糊显示 2&#xff0c;排除故障问题3&#xff0c;解决蓝屏的有效方法 1&a…

本地事务和分布式事务

请直接看原文 原文链接:彻底搞清楚什么是分布式事务 - 知乎 (zhihu.com) -------------------------------------------------------------------------------------------------------------------------------- 1、什么是本地事务 多个sql操作,被同一个线程执行, 使用…

MedicalTransformer论文解读

论文是一个分割任务&#xff0c;但这里的方法不局限于分割&#xff0c;运用到检测、分类都可以。 论文下载 https://www.yuque.com/yuqueyonghupjh9oc/ovceh4/onilw42ux6e9n1ne?singleDoc# 《轴注意力机制》 一个问题 为什么transformer一开始都有CNN&#xff1a;降低H、W…

AWS EC2 如何 使用 SSM会话管理器登陆

首先只有特定版本的OS会默认附带SSM Agent。 预安装了 SSM Agent 的 Amazon Machine Images&#xff08;AMIs&#xff09; - AWS Systems Manager 其次EC的instance role必须有一个叫“AmazonSSMManagedInstanceCore”的策略 如何给IAM User赋权&#xff0c;让他们可以使用SSM…

教育企业CRM选择技巧

教育行业的发展一波三折&#xff0c;要想在激烈的赛道脱颖而出&#xff0c;就需要有一套有效的CRM系统&#xff0c;来帮助教育机构提升招生效率、增加学员留存、提高教学质量。下面说说&#xff0c;教育企业选择CRM系统要具备的四大功能。 1、招生管理功能 教育机构的首要目标…

Java的threadd常用方法

常用API 给当前线程命名 主线程 package com.itheima.d2;public class ThreadTest1 {public static void main(String[] args) {Thread t1 new MyThread("子线程1");//t1.setName("子线程1");t1.start();System.out.println(t1.getName());//获得子线程…

C 语言-数组

1. 数组 1.1 引入 需求&#xff1a;记录班级10个学员的成绩 需要定义10个变量存在的问题:变量名起名困难变量管理困难需求&#xff1a;记录班级1000个学员的成绩 1.2 概念 作用&#xff1a;容纳 数据类型相同 的多个数据的容器 。 特点&#xff1a; 长度不可变容纳 数据类型…