From 914e156cc6dc1a373f85cf3279f9eadc7217fe37 Mon Sep 17 00:00:00 2001 From: lichao <2483469113@qq.com> Date: Wed, 4 Mar 2026 19:30:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Vercel=20=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=20404=20=E5=92=8C=20Swagger=20=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=AE=BF=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - vercel.json: builds.src 从 package.json 改为 api/index.ts,routes.dest 从 /dist/api/index.js 改为 /api - api/index.ts: 修正 require 路径,移除多余的 src/ 前缀 - api/index.ts: Swagger 挂载路径从 /api 改为 /docs,避免与 Vercel 函数路径冲突 - package.json: 添加 vercel-build 脚本确保部署前编译 NestJS --- api/index.ts | 16 ++++++++++------ package.json | 3 ++- vercel.json | 4 ++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/api/index.ts b/api/index.ts index 5369dd6..e4f3b07 100644 --- a/api/index.ts +++ b/api/index.ts @@ -13,12 +13,12 @@ async function bootstrap() { const expressApp = express(); // 使用 require 动态加载编译后的模块(避免 TypeScript 编译时检查) - const { AppModule } = require('../dist/src/app.module'); + const { AppModule } = require('../dist/app.module'); const app = await NestFactory.create( AppModule, new ExpressAdapter(expressApp), - { logger: ['error', 'warn', 'log'] } + { logger: ['error', 'warn', 'log'] }, ); // 配置 CORS @@ -38,8 +38,12 @@ async function bootstrap() { // 尝试加载全局过滤器和拦截器 try { - const { HttpExceptionFilter } = require('../dist/src/common/filters/http-exception.filter'); - const { TransformInterceptor } = require('../dist/src/common/interceptors/transform.interceptor'); + const { + HttpExceptionFilter, + } = require('../dist/common/filters/http-exception.filter'); + const { + TransformInterceptor, + } = require('../dist/common/interceptors/transform.interceptor'); app.useGlobalFilters(new HttpExceptionFilter()); app.useGlobalInterceptors(new TransformInterceptor()); } catch (error) { @@ -67,7 +71,7 @@ async function bootstrap() { .addBearerAuth() .build(); const document = SwaggerModule.createDocument(app, config); - SwaggerModule.setup('api', app, document); + SwaggerModule.setup('docs', app, document); await app.init(); cachedApp = expressApp; @@ -88,7 +92,7 @@ export default async function handler(req: any, res: any) { res.status(500).json({ error: 'Internal Server Error', message: error.message, - stack: process.env.NODE_ENV === 'development' ? error.stack : undefined + stack: process.env.NODE_ENV === 'development' ? error.stack : undefined, }); } } diff --git a/package.json b/package.json index 6b3fa03..84a9f7b 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" + "test:e2e": "jest --config ./test/jest-e2e.json", + "vercel-build": "npx nest build" }, "dependencies": { "@nestjs/cache-manager": "2.1.0", diff --git a/vercel.json b/vercel.json index c41475d..e24db6d 100644 --- a/vercel.json +++ b/vercel.json @@ -2,14 +2,14 @@ "version": 2, "builds": [ { - "src": "package.json", + "src": "api/index.ts", "use": "@vercel/node" } ], "routes": [ { "src": "/(.*)", - "dest": "/dist/api/index.js" + "dest": "/api" } ] }