nestjs / nest

A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications with TypeScript/JavaScript 🚀
https://nestjs.com
MIT License
66.68k stars 7.54k forks source link

nx 18 + nest + webpack + serverless breaking with error src/main.handler is undefined or not exported #13461

Closed pratik-github closed 4 months ago

pratik-github commented 4 months ago

Is there an existing issue for this?

Current behavior

I am trying to setup serverless api using stack: nx 18 + nest + webpack + serverless node: 20.x

gives error:

{
    "errorType": "Runtime.HandlerNotFound",
    "errorMessage": "src/main.handler is undefined or not exported",
    "stack": [
        "Runtime.HandlerNotFound: src/main.handler is undefined or not exported",
        "    at UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:1122:15)",
        "    at async start (file:///var/runtime/index.mjs:1282:23)",
        "    at async file:///var/runtime/index.mjs:1288:1"
    ]
}

Minimum reproduction code

https://github.com/pratik-github/demo-nx-nest-serverless

Steps to reproduce

  1. use node v20.x
  2. configure aws cli credentials
  3. npm install
  4. npx nx deploy graphql

Deployment is successful but when I hit api endpoint I get error;

  1. Internal server error
  2. image

Expected behavior

API should work

Package

Other package

No response

NestJS version

No response

Packages versions

{
  "name": "@nd-server/source",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {},
  "private": true,
  "dependencies": {
    "@codegenie/serverless-express": "^4.14.0",
    "@nestjs/common": "^10.0.2",
    "@nestjs/core": "^10.0.2",
    "@nestjs/microservices": "^10.3.7",
    "@nestjs/platform-express": "^10.0.2",
    "@nestjs/websockets": "^10.3.7",
    "aws-lambda": "^1.0.7",
    "axios": "^1.6.0",
    "class-transformer": "^0.5.1",
    "class-validator": "^0.14.1",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^7.8.0",
    "tslib": "^2.3.0"
  },
  "devDependencies": {
    "@nestjs/schematics": "^10.0.1",
    "@nestjs/testing": "^10.0.2",
    "@nx/eslint": "18.2.4",
    "@nx/eslint-plugin": "18.2.4",
    "@nx/jest": "18.2.4",
    "@nx/js": "18.2.4",
    "@nx/nest": "18.2.4",
    "@nx/node": "18.2.4",
    "@nx/web": "18.2.4",
    "@nx/webpack": "18.2.4",
    "@nx/workspace": "18.2.4",
    "@swc-node/register": "~1.8.0",
    "@swc/core": "~1.3.85",
    "@swc/helpers": "~0.5.2",
    "@types/aws-lambda": "^8.10.137",
    "@types/jest": "^29.4.0",
    "@types/node": "~18.16.9",
    "@typescript-eslint/eslint-plugin": "^7.3.0",
    "@typescript-eslint/parser": "^7.3.0",
    "eslint": "~8.57.0",
    "eslint-config-prettier": "^9.0.0",
    "jest": "^29.4.1",
    "jest-environment-node": "^29.4.1",
    "nx": "18.2.4",
    "prettier": "^2.6.2",
    "serverless-offline": "^13.3.3",
    "serverless-webpack": "^5.13.0",
    "ts-jest": "^29.1.0",
    "ts-node": "10.9.1",
    "typescript": "~5.4.2",
    "webpack-cli": "^5.1.4"
  }
}

Node.js version

20.9.0

In which operating systems have you tested?

Other

I have tested by deploying to aws lambda via serverless

micalevisk commented 4 months ago

:warning: We use GitHub Issues to track bug reports, feature requests and regressions

Try the following instead: