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

embedded/2024/11/14 13:14:37/
javascript">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.ppmy.cn/embedded/114132.html

相关文章

利用Leaflet.js和turf.js创建交互式地图:航道路线绘制

引言 在现代Web应用中,地图的交互性是提供丰富用户体验的关键。Leaflet.js是一个轻量级的开源JavaScript库,它提供了简单易用的API来构建交云的地图。与此同时,turf.js作为一个强大的地理空间分析库,能够处理复杂的地理数据操作。…

【前端基础篇】JavaScript之DOM介绍

文章目录 前言WebAPI背景知识什么是WebAPI什么是APIAPI参考文档 DOM基本概念什么是DOMDOM树查找HTML元素方法概览1. document.getElementById(id)2.document.getElementsByTagName(name)3. document.getElementsByClassName(name)4. document.querySelector(CSS选择器)5. docum…

C++ std::find函数 容器元素查找

简介 std::find函数是C标准库内非常实用的一个函数,主要用于在给定范围内查找某个元素,如果找到该元素,则返回指向该元素的迭代器;如果没有找到,则返回指向范围末尾的迭代器(即 end() )。 fin…

解锁定位服务:Flutter应用中的高德地图定位

前言 在现代移动应用开发中,定位服务已成为一项基本功能,它使得应用能够获取用户的地理位置信息,为用户提供更加个性化的服务。 Flutter 作为跨平台的移动应用开发框架,支持集成多种服务,包括定位服务。 本文将介绍如…

Golang | Leetcode Golang题解之第405题数字转换为十六进制数

题目&#xff1a; 题解&#xff1a; func toHex(num int) string {if num 0 {return "0"}sb : &strings.Builder{}for i : 7; i > 0; i-- {val : num >> (4 * i) & 0xfif val > 0 || sb.Len() > 0 {var digit byteif val < 10 {digit 0…

Bio-Linux-shell详解-1-从0开始

21世纪是数据的世纪&#xff0c;蓬勃发展的生物学积累了大量的数据&#xff0c;急需计算生物学、生物信息学及系统生物学等交叉学科大放异彩&#xff0c;而windows作为我们最熟悉的操作平台&#xff0c;并不能承担如此巨大的工作量&#xff0c;课题组的服务器因此承担了这个责任…

前端开发之原型模式

介绍 原型模式本质就是借用一个已有的实例做原型&#xff0c;在这原型基础上快速复制出一个和原型一样的一个对象。 class CloneDemo {name clone democlone(): CloneDemo {return new CloneDemo()} } 原型原型链 函数&#xff08;class&#xff09;都有显示原型 prototyp…

【算法篇】栈与队列类(笔记)

目录 一、用栈实现队列 二、用队列实现栈 三、有效的括号 四、删除字符串中的所有相邻重复项 五、逆波兰表达式求值 六、滑动窗口最大值 七、前 K 个高频元素 一、用栈实现队列 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/proble…