node+express部署多套vue3项目,总404页面由node控制,子404页面由子vue控制,node路由重定向

news2024/11/10 11:43:44
const express = require('express')
const history = require('connect-history-api-fallback')
const { createProxyMiddleware } = require('http-proxy-middleware')
const cors = require('cors')


let app = express()


app.use(cors())
app.use(history())

// //匹配api开头的请求,实际转发的请求保api这三个字母
// app.use(
//   '/api',
//   createProxyMiddleware({
//     target: 'http://localhost:85',
//     changeOrigin: true,
//   })
// )

// app.use(
//   '/master',
//   createProxyMiddleware({
//     target: 'http://10.30.251.100:81',
//     secure: false,
//     changeOrigin: true,
//     pathRewrite: function (path, req) {
//       console.log(path)
//       // 可以在这里重写路径
//       return `/master${path}`
//     },
//     on: {
//       proxyReq: (proxyReq, req, res) => {
//         //console.log(proxyReq)
//         /* handle proxyReq */
//       },
//       proxyRes: (proxyRes, req, res) => {
//         //console.log(proxyRes)
//         /* handle proxyRes */
//       },
//       error: (err, req, res) => {
//         console.log(err)
//         /* handle error */
//       },
//     },
//   })
// )

// app.use(
//   '/product',
//   createProxyMiddleware({
//     target: 'http://10.30.251.100:82',
//     secure: false,
//     changeOrigin: true,
//     pathRewrite: function (path, req) {
//       console.log(path)
//       // 可以在这里重写路径
//       return `/product${path}`
//     },
//     on: {
//       proxyReq: (proxyReq, req, res) => {
//         //console.log(proxyReq)
//         /* handle proxyReq */
//       },
//       proxyRes: (proxyRes, req, res) => {
//         //console.log(proxyRes)
//         /* handle proxyRes */
//       },
//       error: (err, req, res) => {
//         console.log(err)
//         /* handle error */
//       },
//     },
//   })
// )

app.use(
  '/api',
  createProxyMiddleware({
    target: 'http://127.0.0.1:8001',
    secure: false,
    changeOrigin: true,
    pathRewrite: function (path, req) {
      console.log('path', path)
      // 可以在这里重写路径
      return `${path}`
    },
    on: {
      proxyReq: (proxyReq, req, res) => {
        //console.log(proxyReq)
        /* handle proxyReq */
      },
      proxyRes: (proxyRes, req, res) => {
        //console.log(proxyRes)
        /* handle proxyRes */
      },
      error: (err, req, res) => {
        console.log(err)
        /* handle error */
      },
    },
  })
)

// app.use(
//   '/main',
//   createProxyMiddleware({
//     target: 'http://127.0.0.1:9000',
//     secure: false,
//     changeOrigin: true,
//     pathRewrite: function (path, req) {
//       console.log('path', path)
//       // 可以在这里重写路径
//       return `${path}`
//     },
//     on: {
//       proxyReq: (proxyReq, req, res) => {
//         //console.log(proxyReq)
//         /* handle proxyReq */
//       },
//       proxyRes: (proxyRes, req, res) => {
//         //console.log(proxyRes)
//         /* handle proxyRes */
//       },
//       error: (err, req, res) => {
//         console.log(err)
//         /* handle error */
//       },
//     },
//   })
// )

// app.use('/main', express.static('./dist'))



app.use('/main', express.static('./main'))
app.use('/sub/', express.static('./sub'))
app.use('/', (req, res) => {
  res.redirect('/main/index.html');
});

app.get('*', (req, res) => {
  res.redirect('/main/index.html#/404');
});






app.listen(99, () => {
  console.log('http://localhost:99')
  console.log('success')
})

人工智能学习网站

https://chat.xutongbao.top

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

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

相关文章

波分技术基础 -- MS-OTN介绍

什么是MS-OTN 由于OTN最小交叉颗粒度为ODU0,承载小颗粒业务时带宽利用率较低;且无法承载分组业务,随着MPLS-TP技术的成熟,MS-OTN时代来临。MS-OTN(Multi-Service Optical Transport Network):核…

【论文解读系列】用于自监督点云表示的生成变分对比学习

Generative Variational-Contrastive Learning for Self-Supervised Point Cloud Representation | IEEE Transactions on Pattern Analysis and Machine Intelligence (acm.org) 作者:Bohua Wang; Zhiqiang Tian; Aixue Ye; Feng Wen; Shaoyi Du; Yue Gao 摘要 三…

VS code 查看 ${workspaceFolder} 目录指代路径

VS code 查看 ${workspaceFolder} 目录指代路径 引言正文 引言 在 VS code 创建与运行 task.json 文件 一文中我们已经介绍了如何创建属于自己的 .json 文件。在 VS code 中,有时候我们需要添加一些文件路径供我们导入自定义包使用,此时,我们…

Github Wiki 超链接 转 码云Gitee Wiki 超链接

Github Wiki 超链接 转 码云Gitee Wiki 超链接 Github 是 :[[相对路径]] Gitee 是 :[链接文字](./相对路径) 查找:\[\[(.*?)\]\] 替换:[$1]\(./$1\) 或替换:**[$1]\(./$1\)** (码云的超链接,很…

实战18-Card封装

import Card from ../../components/Card/Index; import rvp from ../../utils/resposive/rvIndex;Component export default struct DomesticService {build() {Column() {Card() {//默认插槽Text("DomesticService")}}.width(100%).margin({ top: rvp(43) })} } im…

2024 Python3.10 系统入门+进阶(十五):文件及目录操作

目录 一、文件IO操作1.1 创建或打开文件1.2 读取文件1.2.1 按行读取1.2.2 多行读取1.2.3 完整读取 1.3 写入文件1.3.1 写入字符串1.3.2 写入序列 1.4 上下文管理1.4.1 with语句的使用1.4.2 上下文管理器(拓展----可以学了面向对象之后再回来看) 1.5 文件的遍历 二、os.path模块…

大语言模型-教育方向数据集

大语言模型-教育方向数据集 编号论文数据集1Bitew S K, Hadifar A, Sterckx L, et al. Learning to Reuse Distractors to Support Multiple-Choice Question Generation in Education[J]. IEEE Transactions on Learning Technologies, 2022, 17: 375-390.Televic, NL, https…

79页 PPT华为项目管理经典培训教材(高级)

读者朋友大家好,最近有会员朋友咨询晓雯,需要《79页PPT华为项目管理经典培训教材》资料,欢迎大家文末扫码下载学习。 一、华为项目管理理念方法 (一)项目管理基本概念与方法 项目启动 明确项目目标:华为…

SAP B1 流程实操 - 营销单据销售部分(上)

背景 在 SAP B1 中,最重要的模块就是【销售】,企业可能不涉及生产和库存(贸易公司),甚至不涉及采购(服务业),但是一定会有基本的 销售。本文中我们讲解 销售 模块的基本核心&#x…

【QT】基于HTTP协议的网络应用程序

目录 1 HTTP概述 2 QT中实现高层网络操作的类 3 使用HTTP类请求数据 4 基于HTTP协议的网络文件下载 1 HTTP概述 HTTP(超文本传输协议)是互联网上应用最为广泛的协议之一,它定义了客户端和服务器之间进行通信的规则。HTTP是一种无状态的协议…

rcc 不是内部或外部命令,也不是可运行的程序或批处理文件

D:\Windows Kits\10\bin\10.0.22621.0\x86 将上述路径添加到环境变量中,重启电脑

【微服务-注册中心】

注册中心的作用: 微服务将业务拆分成了一个一个服务,当实现一个业务的时需要调用多个服务,那么每个服务的调用都需要知道它的URL。如何更方便的调用,注册中心就出现了。 我们可以把注册中心当作通讯录,通讯录中记录了服…

【JS】postMessage与MessageChannel

前言 postMessage 和 MessageChannel 都是用来实现跨文档、跨窗口或跨线程(Web Worker)的消息传递机制。 postMessage 可以在 iframe、同源或跨源窗口之间传递数据,也可以用于主线程与 Web Worker 之间的通信。 postMessage 是一种单向的…

Django 聚合查询

文章目录 一、聚合查询二、使用步骤1.准备工作2.具体使用3.分组查询(annotate)1.定义2.使用3.具体案例 4.F() 查询1.定义2.使用 5.Q() 查询1.定义2.查询 一、聚合查询 使用聚合查询前要先从 django.db.models 引入 Avg、Max、Min、Count、Sum&#xff0…

VS code EXPLORER 中不显示指定文件及文件夹设置(如.pyc, __pycache__, .vscode 文件)

VS code EXPLORER 中不显示指定文件及文件夹设置 引言正文方法1打开方式1打开方式2 方法2 引言 VS code 号称地表最强轻量级编译器,其最大的优势在于用户可以根据自己的需求下载适合自己的 extension。从而定制个性化的编译器。然而,本人今天遇到了一个…

如何调用API接口:一份简明指南

在软件开发中,调用API接口是一项基本而重要的技能。API(应用程序编程接口)允许不同程序之间进行交互,使得数据和功能可以跨应用程序共享。本文将为你提供一份简明的指南,帮助你理解如何调用API接口。 什么是API接口&am…

Android中的引用类型:Weak Reference, Soft Reference, Phantom Reference 和 WeakHashMap

在Android开发中,内存管理是一个非常重要的话题。为了更好地管理内存,Java和Android提供了多种引用类型,包括Weak Reference、Soft Reference、Phantom Reference以及WeakHashMap。这些引用类型在不同的场景下可以帮助我们更有效地管理内存&a…

(笔记)mac笔记本调节键盘速率

我在使用neovim的时候,发现按下hjkl或者shift[]来进行移动的时候 开始延迟大概几百毫秒的时间才开始移动 所以我上网找了下方法 发现修改这了可以改变速率 我就直接拉到了fast 芜湖 起飞 local opt vim.opt local o vim.o local g vim.go.timeoutlen 100 o…

论文速递!时序预测!DCSDNet:双卷积季节性分解网络,应用于天然气消费预测过程

本期推文将介绍一种新的时序预测方法:双卷积季节性分解网络(Dual Convolution withSeasonal Decomposition Network, DCSDNet)在天然气消费预测的应用,这项研究发表于《Applied Energy》期刊。 针对天然气消费的多重季节性和非规律性&#x…

汽车焊机数据通信:Profinet转Canopen网关的神奇连接

在汽车制造领域,汽车焊机的高效、稳定运行对于整车质量至关重要。而Profinet转Canopen网关在汽车焊机的数据通信中发挥着关键作用。 Profinet是一种广泛应用于工业自动化领域的通信协议,具有高速、实时、可靠等特点。Canopen则在汽车电子等领域有着广泛…