Vue项目部署在Spring Boot出现页面空白问题的解决方案

spring boot+vue项目运行是空白 报错如下,按平常正常的步骤来,先运行后端,再启动前端,报错如下: 尝试1.在产生这个错误前,我因为项目80端口总是被占用,自己改了端口为84,可能是这个错???? 操作:刚刚去launch.json文件下修改8080为8084,重新启动前端 前端跑了很久,最后出来还是8080,在浏览器运行仍然是空白,但是报错变了 然后我将端口改回了80 运行后端,报错如下: 尝试2.因为80端口被占用,那我去关闭所有的80端口?? https://blog.youkuaiyun.com/qu... 阅读详情
AI摘要

本文探讨Vue项目在SpringBoot环境中部署的常见问题,包括页面空白、404错误及刷新后的路径问题,提出了解决方案,如调整assetsPublicPath、配置errorPage等。

网上流行的解决方案是将assetsPublicPath: '/'改成'./',下面说一下这个解决方案的弊端:

通常页面空白的问题出现大多数是由于Spring Boot端配置了server.servlet.context-path,上下文改变了css, js等文件的访问路径,文件无法加载导致index.html显示空白。'/'改成'./'是将绝对路径变为相对路径,可以动态适应Spring Boot端上下文的改变,这是为什么这个解决方案起作用的原因。

Vue项目部署在Spring Boot出现的另一个常见问题是当刷新浏览器的时候出现white label, 也就是404错误,解决的方案基本是把error page配置成为Vue的index.html。

这两个解决方案有冲突的地方,当router出现子路径的时候刷新浏览器,error page会指向Vue的index.html页面,此时页面中访问css,js文件的路径是相对路径,也就是上下文路径+router子路径,这将导致css,js再次无法正常加载,这就是相对路径的弊端。

由于router会出现子路径,因此必须保证assetsPublicPath为绝对路径,下面讲一下保持绝对路径的解决方案:

1 假设Spring Boot端配置server.servlet.context-path: api, 对应Vue的/config/index.js中assetsPublicPath: '/'改成 '/api/'

2 router/index.js中配置base: '/api/', 这是保证浏览器刷新时上下文参数和router跳转路径一致。

3 对于Ajax请求需要配置baseURL, 如果使用Axios, 可以采用如下方法在main.js中配置

// http request 拦截器

Axios.interceptors.request.use(

config => {

if (localStorage.getItem('id_token')) {

config.headers.Authorization = localStorage.getItem('id_token')

}

config.baseURL = '/api'

return config

},

err => {

return Promise.reject(err)

})

4 另外需要注意的一点,按照Spring Boot默认配置, 在Vue端/config/index.js中assetsSubDirectory: 'static'要改变为其它字符,比如:'content', 'vue', 'api'等等。

5 试过将assetsSubDirectory配置为空,它和另一个css图片加载的方案有冲突,图片加载解决方案是在/build/util.js中加一行配置

// Extract CSS when that option is specified

// (which is the case during production build)

if (options.extract) {

return ExtractTextPlugin.extract({

use: loaders,

fallback: 'vue-style-loader',

publicPath: '../../'

})

结尾附上Spring Boot端将error page指向Vue的index.html代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;


@Configuration
public class ServletConfig {
    private static final Logger logger = LoggerFactory.getLogger(ServletConfig.class);
    @Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {
        logger.info("come to 404 error page");
        return factory -> {
            ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html");
            factory.addErrorPages(error404Page);
        };

    }
}

总结:以上是Vue项目部署于Spring Boot中常见的几个问题的解决方案。如果遇到其它部署问题欢迎留言!

Cheers!

将 vue3 项目打包后部署在 springboot 项目运行 服务端需要增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个index.html页面,这个页面就是你 app 依赖的页面。检查前端的 vue-router 使用历史模式还是哈希模式,历史模式(HTML5 模式)需要后端额外配置,配置参考上文。在 vite.config.js(.ts) 设置开发或生产环境服务的公共基础路径(base配置项),这里不使用相对路径。检查 index.html ,查看 script 和 link 标签的地址,应该是绝对路径(不含./) 阅读详情

相关推荐

Docker Compose一键部署Spring Boot + Vue项目

本文在普通的Docker部署Spring Boot + Vue项目的基础上进行。部署若依前后端分离版项目为例,重点在于如何使用Docker Compose的方式加快项目部署过程。此前使用Docker部署一个Spring Boot + Vue项目,包含了4个容器:MySQLRedisJava后端Nginx前端而稍微复杂的项目,还会有各种各样的其它中间件,需要部署的容器远不止4个。如果还像之前那样手动的逐一部署,就太麻烦了。而Docker Compose就可以帮助我们实现。

java15655057970的博客 1231

Vue打包后通过springboot运行页面为空白页的解决方法

Vue打包后通过springboot运行页面为空白页的解决方法 springboot加入dist无法正常显示效果的解决方法

weixin_46642210的博客 3666

解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题

主要介绍了解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

vue2 页面刷新空白问题

最近一段时间在写后台管理项目,发现登陆后刷新页面就直接空白了,个人觉得原因就是动态路由没有注册好,所以会导致页面出现空白。最重要的就是在main.js,用户每次刷新页面时都会触发created,在这里只需要判断用户已经登录了还是没登录就可以。路由守卫这里只判断是不是从登录页去首页。如有错误请大家多多指教!

qq_68465169的博客 1491

手把手教你用DCT/DCG实现Multi-bit FF物理优化(含SPG流程避坑指南)

本文详细解析了Multi-bit FF(MBFF)在芯片物理实现中的优化方法,重点介绍了DCT/DCG与SPG流程的实战应用。通过物理感知综合、寄存器组识别和增量优化三阶段流程,实现PPA(Power-Performance-Area)的协同提升。文章还提供了Innovus与ICC工具的协同优化策略及典型问题排查指南,帮助工程师高效完成MBFF物理优化。

ik67890123的博客 241

vCenter Server出现no healthy upstream的解决方法

可以通过"VMware vCenter Server Management(服务)"来排查问题,在网页里面找到“服务”模块,会发现有很多服务没有启动起来,而且手动启动也无法启动。7.0 地址后,页面出现“no healthy upstream”,无法正常登录vCenter,重启后依旧如此,该故障的前提是没有对vCenter做过任何配置,如下图所示。于是用命令查询是否有证书过期,发现真有多个服务依赖的证书在当天早上过期。使用如下命令尝试打开服务发现不分服务可以打开,不分服务无法打开。

1万+

将 Vue 项目打包后部署到 Spring Boot 项目中的全面指南

本文将指导你如何将一个基于 Vue 3 的前端项目打包后,部署到一个基于 Spring Boot 的后端项目中。通过这种方式,你可以将前后端项目集成在一个应用中,简化部署流程。通过以上步骤,你可以将 Vue 项目打包后部署到 Spring Boot 项目中,实现前后端项目的集成。这种方式简化了部署流程,但也带来了一些挑战,如资源路径配置和静态资源管理。

太渊 5039

Docker部署Spring Boot + Vue项目

Docker部署Spring Boot + Vue项目。

大头皮鞋的博客 2416

第一章 初识SpringBoot

提供大量的自动配置Spring和第三方库,开发者可以根据项目需求选择相关的starters依赖,而无需手动配置大量的Spring配置文件,开箱即用,无需配置XML,无代码生成。Spring Boot与Spring Cloud等框架集成,为构建微服务提供了强大的支持,并通过Spring Cloud实现服务注册、负载均衡、熔断等功能。本质上讲,Spring Boot就是Spring,它做了那些本应我们去做的Spring Bean配置等工作。以上就是一个简单的Spring Boot应用的创建和运行过程。

Calvin的博客 1581

ESP32-S3双模CMSIS-DAP调试器:USB+WiFi无线调试方案

CMSIS-DAP是ARM生态中标准化的嵌入式调试协议接口,广泛用于Keil、IAR、STM32CubeIDE等开发环境。其核心原理是通过SWD/JTAG物理层实现目标芯片寄存器访问、内存读写与断点控制,依赖确定性时序和低延迟通信。传统DAPLink调试器受限于USB线缆束缚,而WiFi-USB-DAPLink项目将完整CMSIS-DAP v2协议栈移植至ESP32-S3平台,同时支持USB CDC直连与WiFi TCP远程通道,兼顾实时性与网络化部署能力。该方案无需主机驱动、兼容主流IDE,并支持多机并发

weixin_31185473的博客 366

Spring-Boot + Spring-Security + Vue 跨域问题

原文: http://www.aqcoder.com/post/content?id=40 最近的一个小项目使用了 Spring-Boot + Vue 的前后端分离小项目,项目虽小,也五脏俱全,有自己的用户系统,因此就有了权鉴问题。 Java 领域里有两个权鉴框架比较出名 Shiro 和 Spring Security。这里我们使用了 Spring Security。 必须要了解的概念 CSR...

Ravenq的专栏 5543

数据行小于列索引,内部模式表示可能存在问题

通过检查数据源的完整性和一致性,检查Debezium配置,检查列映射以及启用调试模式和日志记录,您应该能够解决这个错误。请注意,具体的解决方法可能因您的具体情况而异,因此您可能需要根据问题的根本原因进行适当的调整和修复。如果问题仍然存在,您可能需要进一步检查您的数据和配置,并根据具体情况进行调整和修复。在Debezium中,您可以使用列重命名和列映射来定义源和目标之间的列映射关系。通过检查日志,您可以查看详细的错误信息和堆栈跟踪,从而更好地理解问题的根本原因。首先,我们应该检查数据源的完整性和一致性。

XbtoMemory的博客 730

Vue项目打包到Spring Boot后部署Tomcat

经过几天的调试,终于将vue+springboot的前后端分离项目,整合后成功部署到服务器。本文章来记录一下这几天遇到的问题。整合后发布到Tomcat遇到的主要问题:访问项目路径404;发布到tomcat后css、js等资源文件404问题;访问项目路径为空白页

sensen的博客 5840

Qt实现窗口等比例缩放

在Qt中,实现窗口的等比例缩放是一个常见的需求。通过对窗口的尺寸进行调整,使得窗口的内容在缩放过程中保持相同的比例,可以提供更好的用户体验。通过以上的代码,我们实现了一个可以等比例缩放的Qt窗口。在调整窗口大小时,窗口中的标签和按钮将按比例缩放,保持内容的比例不变。首先,我们需要在Qt中创建一个窗口,并设置其内容。在该事件中,我们将根据窗口的新尺寸计算出合适的比例因子,并将其应用到窗口的内容上。现在,我们将添加功能,使得窗口可以等比例缩放。最后,我们将缩放因子应用到窗口中的标签和按钮上,调整它们的尺寸。

2301_79330511的博客 3958

【WRF工具】WRF Domain Wizard第一期:软件下载及安装

【WRF工具介绍】WRF Domain Wizard-确定模拟区域

WW、forever的博客 2917

Spring Boot+VUE项目部署以及遇到的问题解决

SpringBoot项目打包部署 更改文件路径及数据库配置 在idea的Meven窗口中先clean然后install,不是idea的可以去百度springboot打jar包方法 在包含启动类的项目的 target目录下可以看到生成的.jar文件 将jar文件复制到服务器中,进入在jar所在路径 运行 nohup java -jar ./打包的jar文件.jar >/dev/null 2>&1 & 或者运行 nohup java -jar ./打包的jar文件.jar

qq_18722459的博客 3039

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 望山跑死马
下一篇: Java8 日期/时间(Date Time)API指南
java_augur
博客等级 码龄22年 67粉丝 64原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值