mirror of
https://gitee.com/myxzgzs/boyuehasfj-vue3-html.git
synced 2025-08-08 07:02:42 +08:00
125 lines
3.8 KiB
TypeScript
125 lines
3.8 KiB
TypeScript
![]() |
import { fileURLToPath, URL } from 'node:url'
|
|||
|
import fs from 'node:fs'
|
|||
|
import path from 'node:path'
|
|||
|
|
|||
|
import { defineConfig } from 'vite'
|
|||
|
import vue from '@vitejs/plugin-vue'
|
|||
|
import vueDevTools from 'vite-plugin-vue-devtools'
|
|||
|
|
|||
|
// https://vite.dev/config/
|
|||
|
export default defineConfig({
|
|||
|
plugins: [
|
|||
|
vue(),
|
|||
|
vueDevTools(),
|
|||
|
// 自定义中间件,处理路由问题
|
|||
|
{
|
|||
|
name: 'handle-spa-fallback',
|
|||
|
configureServer(server) {
|
|||
|
// 返回中间件处理函数
|
|||
|
return () => {
|
|||
|
server.middlewares.use((req, res, next) => {
|
|||
|
// 如果是前端路由路径,直接返回index.html
|
|||
|
if (req.url === '/hasfjlaw' || req.url === '/hasfjcase' || req.url === '/hasfjform' || req.url === '/qrcodes') {
|
|||
|
const indexHtml = fs.readFileSync(
|
|||
|
path.resolve(__dirname, 'index.html'),
|
|||
|
'utf-8'
|
|||
|
)
|
|||
|
res.statusCode = 200
|
|||
|
res.setHeader('Content-Type', 'text/html')
|
|||
|
res.end(indexHtml)
|
|||
|
return
|
|||
|
}
|
|||
|
next()
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
],
|
|||
|
resolve: {
|
|||
|
alias: {
|
|||
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|||
|
},
|
|||
|
},
|
|||
|
server: {
|
|||
|
port: 80, // 指定端口为80
|
|||
|
host: '0.0.0.0', // 允许外部访问
|
|||
|
proxy: {
|
|||
|
// 配置跨域
|
|||
|
'/api': {
|
|||
|
// target: 'http://127.0.0.1:9799', // 后端服务地址
|
|||
|
target: 'http://222.184.49.22:9799', // 后端服务地址
|
|||
|
changeOrigin: true, // 支持跨域
|
|||
|
rewrite: (path) => path.replace(/^\/api/, ''), // 移除/api前缀
|
|||
|
configure: (proxy, options) => {
|
|||
|
// 添加代理错误处理
|
|||
|
proxy.on('error', (err, req, res) => {
|
|||
|
console.error('API代理错误:', err);
|
|||
|
|
|||
|
// 返回友好的错误响应
|
|||
|
if (!res.headersSent) {
|
|||
|
res.writeHead(500, {
|
|||
|
'Content-Type': 'application/json'
|
|||
|
});
|
|||
|
|
|||
|
res.end(JSON.stringify({
|
|||
|
code: 500,
|
|||
|
msg: '后端服务暂时不可用,请稍后重试',
|
|||
|
data: null
|
|||
|
}));
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
// 添加司法局后台管理接口代理
|
|||
|
'/hasfj': {
|
|||
|
// target: 'http://127.0.0.1:9799', // 后端服务地址
|
|||
|
target: 'http://222.184.49.22:9799', // 司法局后端服务
|
|||
|
changeOrigin: true,
|
|||
|
rewrite: (path) => path, // 保持路径不变
|
|||
|
configure: (proxy, options) => {
|
|||
|
// 添加代理错误处理
|
|||
|
proxy.on('error', (err, req, res) => {
|
|||
|
console.error('后台管理接口代理错误:', err);
|
|||
|
|
|||
|
// 返回友好的错误响应
|
|||
|
if (!res.headersSent) {
|
|||
|
res.writeHead(500, {
|
|||
|
'Content-Type': 'application/json'
|
|||
|
});
|
|||
|
|
|||
|
res.end(JSON.stringify({
|
|||
|
code: 500,
|
|||
|
msg: '后端服务暂时不可用,请稍后重试',
|
|||
|
data: null
|
|||
|
}));
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
// 添加文件下载代理,专门处理静态资源文件请求
|
|||
|
'/profile': {
|
|||
|
target: 'http://222.184.49.22:9799', // 后端静态资源服务地址
|
|||
|
changeOrigin: true,
|
|||
|
rewrite: (path) => path, // 保持路径不变
|
|||
|
configure: (proxy, options) => {
|
|||
|
proxy.on('error', (err, req, res) => {
|
|||
|
console.error('文件下载代理错误:', err);
|
|||
|
|
|||
|
if (!res.headersSent) {
|
|||
|
res.writeHead(500, {
|
|||
|
'Content-Type': 'application/json'
|
|||
|
});
|
|||
|
|
|||
|
res.end(JSON.stringify({
|
|||
|
code: 500,
|
|||
|
msg: '文件下载失败,请稍后重试',
|
|||
|
data: null
|
|||
|
}));
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
})
|