import express, { Application, Request, Response, NextFunction } from 'express'; import path from 'path'; import dotenv from 'dotenv'; dotenv.config(); process.env.ROOT_DIR = path.resolve(__dirname); const env = process.env; export const app = express(); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(require('cookie-parser')()); const dist = path.join(__dirname, env.UPFRONT_PATH ?? 'upfront'); // 静态资源服务,假设你的dist目录包含了编译后的Vue应用 app.use(express.static(dist)); app.use('/static', express.static(path.join(__dirname, env.STATIC_PATH ?? 'static'))) import router from './src/routes/api'; app.use('/api', router); // // catch 404 and forward to error handler // app.use(function(req, res, next) { // res.status(404); // res.end('

404 Not Found

'); // }); // 所有未匹配到的请求都重定向到index.html,使用vue3的SPA匹配 app.get('*', (req: Request, res: Response) => { res.sendFile(path.join(dist, '/index.html')); }); // error handler app.use(function(err: any, req: Request, res: Response, next: NextFunction) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = env.MOD === 'development' ? err : {}; console.log(err); // render the error page res.status(err.status || 500); res.end('

error

'); });