Hi. How can I make my nestjs server serverless wit...
# help
k
Hi. How can I make my nestjs server serverless with serverless-stack?
I follow nestjs server setup as in nestjs docs https://docs.nestjs.com/faq/serverless#example-integration
My nestjs src/main.ts:
Copy code
import { NestFactory } from '@nestjs/core';
import serverlessExpress from '@vendia/serverless-express';
import { Handler } from 'aws-lambda';
import { AppModule } from './app.module';

export async function bootstrap(): Promise<Handler> {
  const app = await NestFactory.create(AppModule);
  await app.init();

  const expressApp = app.getHttpAdapter().getInstance();
  return serverlessExpress({ app: expressApp });
}
My serverless-stack src/lambda.ts:
Copy code
import { APIGatewayProxyHandlerV2 } from "aws-lambda";
import { Handler } from "aws-lambda";
import { bootstrap } from "../../server/src/main";

let server: Handler;

export const handler: APIGatewayProxyHandlerV2 = async (
  event,
  context,
  callback
) => {
  server = server ?? (await bootstrap());
  return server(event, context, callback);
};
I get many messages like this:
How do I properly set this up?
After whole day of suffering i think I figured this out 😄
Copy code
export default class MyStack extends sst.Stack {
  constructor(scope, id, props) {
    super(scope, id, props);

    const api = new sst.Api(this, "Api", {
      routes: {
        $default: {
          function: {
            handler: "src/lambda.handler",
            bundle: {
              externalModules: [
                "class-validator",
                "class-transformer",
                "@nestjs/websockets/socket-module",
                "@nestjs/microservices/microservices-module",
                "cache-manager",
                "@nestjs/microservices",
              ],
            },
          },
        },
      },
    });

    this.addOutputs({
      ApiEndpoint: api.url,
    });
  }
}
f
Hey @Karolis Stulgys, glad u figured it out!
Are these node modules u passed into
externalModules
imported on the fly by nestjs? It seems esbuild didn’t bundle them by default.