You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Serverless NestJS使用serverless-offline运行后请求无响应如何解决

Serverless NestJS serverless-offline本地请求无响应排查方案
  • 校验serverless.yml handler配置正确性
    确认functions块下对应函数的handler路径和你lambda.ts的导出完全匹配,比如你lambda.ts存放在src目录下,导出的方法名为handler,配置应为handler: src/lambda.handler,路径错误会导致请求命中后无法触发入口逻辑,直接无响应返回。
  • 核对serverless-offline版本的路径规则差异
    如果你使用serverless-offline v10及以上版本,默认不再强制拼接stage路径前缀,你可以在custom.serverless-offline配置中添加noPrependStageInUrl: false保留/dev前缀,或者直接请求http://localhost:3000测试。
  • 排查lambda.ts入口逻辑问题
    必须保证入口逻辑使用了正确的serverless适配层,且缓存了初始化的服务实例,正确写法参考:
    import { NestFactory } from '@nestjs/core';
    import { AppModule } from './app.module';
    import { ExpressAdapter } from '@nestjs/platform-express';
    import * as serverlessExpress from '@vendia/serverless-express';
    import { Context, Handler } from 'aws-lambda';
    import * as express from 'express';
    
    let cachedServer: Handler;
    
    async function bootstrap() {
      if (!cachedServer) {
        const expressApp = express();
        const app = await NestFactory.create(AppModule, new ExpressAdapter(expressApp));
        await app.init();
        cachedServer = serverlessExpress({ app: expressApp });
      }
      return cachedServer;
    }
    
    export const handler = async (event: any, context: Context, callback: any) => {
      const server = await bootstrap();
      return server(event, context, callback);
    };
    
  • 检查端口占用和路由注册情况
    启动前确认3000端口无其他服务占用,也可在启动命令后加--port 3001切换端口测试。同时查看serverless-offline启动日志中的路由打印列表,确认你的hello接口路由被正确注册,没有被全局前缀覆盖。
  • 验证接口路径匹配规则
    如果你的AppController的hello接口配置的路径是/hello,而非根路径/,需要请求http://localhost:3000/dev/hello才能命中接口。

内容的提问来源于stack exchange,提问作者yangseungbin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:15:01