在history模式下部署vue项目到tomcat服务器的踩坑经历【前端VUE+后端JAVA】

2023-05-16

前言

因为是要将之前用jq写的前端代码重构为基于vue下的项目,又是第一次将vue运用起来,所以真的可谓是一步一个坑,今天先记一波部署的坑。

vue项目源码中的修改

router默认的模式是hash,但是由于他在地址栏中的地址会跟一个小尾巴,所以我在做项目的时候直接选择不用这种模式,而是选择了history。随之而来的也是一系列相关的修改。

  1. 在router.js中的修改:
 	const router = new Router({
    	mode: 'history',	//模式设置为history
    	base: '/secops/nsoc/'	//这个必配,是index.html所在的路径地址
    })

(此处修改确保打包之后,在服务器上运行时不会出现页面空白的现象)
index.html所在的路径

  1. 对webpack的配置修改:
    1) vue-cli2下的修改:
    (这里对于webpack.base.conf.js的修改,为了保证路由跳转的路径正确性)对于webpack.base.conf.js的修改
    (这里对于index.js的修改,为了保证所需静态资源路径)
    对于index.js的修改
    2) vue-cli3下的修改:
    由于vue-cli3相对于vue-cli2去掉了build和config文件夹,所以如果需要配置,我们需要自己创建一个vue.config.js文件来进行配置,该文件需要和package.json放在同一级别。
    在这里插入图片描述
    写一些基本配置,其中publicPath是必写的。
module.exports = {
    publicPath: './',// 修改路径,3.3起已经用publucPath代替了baseUrl
    assetsDir:'static',
    lintOnSave: true, // 在保存时校验格式
    productionSourceMap: false, // 生产环境是否生成 SourceMap
    devServer: {
      open: true, // 启动服务后是否打开浏览器
      host: '0.0.0.0',
      port: 8080, // 服务端口
      https: false,
      hotOnly: false,
      proxy: null, // 设置代理
    }
}

以上,就已经将vue项目源代码中的配置配好了,接下来就是打包放在tomcat服务其中啦。

npm run build

项目打包后tomcat下的配置

打包后的项目需要放在webapps下面,这个就不用我多说了,由于我的项目需要一点点借鉴之前的项目来与后端结合,所以原有的配置我并没有动。在tomcat中我们只需要修改WEB-INF文件夹中的web.xml文件就好了。
在这里插入图片描述
将这段代码写入web.xml文件中即可。

<web-app>
	<error-page>
		<error-code>404</error-code>
		<location>/nsoc/index.html</location>
	</error-page>
</web-app>

配置中注意的问题

  1. 该文件中不要配置下面的代码
	<welcome-file-list>
		<welcome-file>default.htm</welcome-file>
	</welcome-file-list>

因为之前的项目是通过配置这个来确定首页的显示,如果他存在就不能跳转到我们所需要的页面了。

  1. location中的路径定要确定明白!
    因为受到了router中base的配置影响,所以最一开始的时候我将location配置为
<location>/secops/nsoc/index.html</location>

虽然从‘/’这个路由下进到了我们的项目当中,并且项目中的路由跳转也是正常的,但却出现了一个可怕的问题。当在地址栏中从‘/xxx’路径下想进入到项目中的某一模块时,页面给我们报出了404的错误。并且在控制台中,network下并没有404的请求,console中也没有错误报出。

开始以为是前端代码的问题,在网上搜索了很多也不见结果,最后请教了一位大神找到了根本问题。

实际上,在跳转到’/xxx’的时候请求并没有404,应该是命中了服务器的规则但是服务器上并没有找到与之相对应的静态资源。所以如果没有404的请求,可以首先考虑一下是不是tomcat配置是否存在问题。

关于错误路径可以访问根路由的一点猜想:

在tomcat下,ip地址指向的应该是webapps这个目录, 而tomcat将其设为静态网站目录,所以10.xxx.xxx.xxx/secops/nsoc可以访问到我放在secops/nsoc下的index.html文件,但是当跳转10.xxx.xxx.xxx/secops/nsoc/xxx时,这个目录在文件结构上不存在,所以就应该是404的错误,走到web.xml的404配置中。

只不过web.xml时在secops目录中的,location里的‘/’其实指的是secops。而我写的‘/secops/nsoc/index.html’实际应该是‘secops/secops/nsoc’

所以走到404的配置里发现配置的文件时不存在的,所以会抛出一个‘找不到网页’的问题。

结尾

最后,经过不断的调整,项目部署问题算是解决了,总结的有些啰嗦,但也将我最近踩的坑算是一 一填平了,希望可以对和我一样刚刚起步的人有所帮助。

感谢看到这里。如果有哪里写的有问题,希望来纠正。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在history模式下部署vue项目到tomcat服务器的踩坑经历【前端VUE+后端JAVA】 的相关文章

  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • Cortex-M0/M0+屏蔽优先级低于BASEPRI设定的中断

    Cortex M3 M4 M7有BASEPRI特殊功能寄存器可以屏蔽优先级低于BASEPRI设定值的中断 xff0c 但Cortex M0 M0 43 没有BASEPRI寄存器 xff0c 不过仍然可以实现相识的功能 mingdu zhen
  • 双系统win+redhat7.6安装

    下载ISO镜像 xff1a 我从msdn itellyou cn下载了Windows10的镜像文件 xff0c 利用UltralSO刻录到U盘 xff08 打开软件 xff0c 选择菜单栏的文件 gt 打开 xff0c 选择下载的镜像 xf
  • 大道至简——RISC-V架构之魂(中)

    本文为 RISC V CPU设计 专栏和 RISC V嵌入式软件开发 专栏系列文章之一 注 xff1a 本文节选自 硅农亚历山大 所著国内第一本系统介绍CPU与RISC V设计的中文书籍 手把手教你设计CPU xff1a RISC V处理器
  • 嵌入式系统的分类

    按照嵌入式系统所使用的操作系统 xff0c 可以将嵌入式系统分成三类 xff1a Rich OS类 RTOS类 Bare metal类 mingdu zheng at gmail dot com https blog csdn net zo
  • 第04课: wiki 在 GitHub

    Git gt wiki什么人可以用 wiki xff1f wiki 本质是什么 xff1f GitHub wiki 的最佳实践 xff1f 提问 Git gt wiki GitHub 是基于 Git 的社交平台 xff0c 当然的 xff0
  • 路由器开发知识汇总

    ip route get lt address gt proc net nf contrack xff0c NAT操作只会修改回复方向 xff08 第二个 xff09 四元组 QNX route get lt address gt Wind
  • USB HS-PHY眼图调试

    1 USB2 PHY AFE 1 1 USB 2 0 FS PHY github ultraembedded core usb fs phy NOP USB transceiver for all USB transceiver which
  • USB SS-PHY Tuning

    1 USB 3 0 PIPE PHY 1 1 USB 3 0 PHY USB 3 0 PHY 61 PIPE wrapper 43 PCS 43 SerDes 1 2 SS PHY电流源 CML电流源串联在NMOS管的Source中 xff
  • TF系列在PX4上的应用

    北醒TF 系列在PX4 上的应用 PX4 有着自己独特的优势 xff0c 受到广大爱好者的喜爱 TF 系列是北醒推出的性价比极高的激光雷达 xff0c 受到广大爱好者的追捧 本文介绍TF 系列和PX4 的连接方法 本文档基于QGroundC
  • 【Ardupilot (APM)】 Benewake(北醒) TFmini-i CAN 基于PixHawk的运用说明

    目录 一 前言二 TFmini i CAN 配置三 接线四 飞控参数设定4 1 避障的常用设置4 2 避障测试4 3 定高的常用设置4 4 定高测试 五 常见问题 一 前言 TFmini i CAN PixHawk1 CAN 端口或任何已刷
  • 用sourcetree对gitlab进行项目管理

    前言 目前公司项目存放在gitlab ce上 xff0c 由于开发人员用的系统有Windows和Mac xff0c 所以选择了比较容易上手的sourcetree进行管理 该管理基于了git flow和fork flow的结合 sourcet
  • vue-cli3混淆、压缩打包(另附问题解决方法)

    前言 欸 xff0c 其实这回也没什么前言了 xff0c 就是之前的代码需要做混淆之后压缩打包 使用这个插件 插件地址 https github com webpack contrib terser webpack plugin 安装命令
  • Centos7 安装 Paraview5.6.2

    1 下载Paraview 官网下载地址 xff1a Download ParaView 下载Paraview栏下的 tar gz压缩包 2 解压下载得到的压缩包 xff0c 获得目录 xff1a home hly 下载 ParaView 5
  • 程序员实用小工具(一)

    前言 整理一下工作当中比较常用的软件 xff0c 是一种分享 xff0c 也是一种记录 1 CSDN浏览器助手 这是CSDN官方推出的一款浏览器插件 首先界面就比较赏心悦目 xff0c 其次功能也比较多 xff0c 很多功能都集中在了一起
  • 「jira」筛选器的管理

    前言 目前 xff0c 公司使用的项目管理工具即为jira平台 xff0c 经过一段时间的探索与实践 xff0c 已经将一套运行流程制定完毕 xff0c 并在试运行期间 特此记录一下一些使用的方式与心得与大家分享 介绍 其实筛选器的就是为用
  • 「VScode」通过VScode进行git的版本管理

    前言 之前在git的版本管理上 xff0c 我使用的是sourcetree xff0c 说实话 xff0c 软件还是蛮好用的 xff0c 界面化做的很好看新手用起来也不复杂 xff0c 不过安装上不是很方便而已 但既然VScode提供了gi
  • 「npm」安装依赖时,报错Error: EACCES: permission denied

    背景 运行环境 xff1a CentOS Linux release 7 5 1804 node版本 xff1a v16 19 0 运行时执行 xff1a npm install 报错如下 xff1a vue span class toke
  • 「VScode」在vscode中通过cookie登录leetcode

    前言 我是用中国版的leetcode xff0c 但是不知道为什么用密码登录总是失败 xff0c 最后用cookie登录上的 简单记录一下 xff0c 方便大家查看 基础设置 扩展设置 在设置中找到 endpoint 选择 leetcode
  • Qunee for HTML5的学习与使用笔记(一)

    在CSDN中的第一篇博文就献给我学习了一段时间 xff0c 仍然在研究使用的Qunee吧 因为是在公司里面后接手的这个插件 xff0c 上一个使用的同事再简单交接了一下之后 xff0c 就离开公司了 xff0c 所以一切的依靠就只有官网啦
  • 在history模式下部署vue项目到tomcat服务器的踩坑经历【前端VUE+后端JAVA】

    前言 因为是要将之前用jq写的前端代码重构为基于vue下的项目 xff0c 又是第一次将vue运用起来 xff0c 所以真的可谓是一步一个坑 xff0c 今天先记一波部署的坑 vue项目源码中的修改 router默认的模式是hash xff