serverless / serverless-plugin-typescript

Serverless plugin for zero-config Typescript support
MIT License
784 stars 224 forks source link

Error [ERR_MODULE_NOT_FOUND]: Cannot find module #288

Closed Strydom closed 1 year ago

Strydom commented 1 year ago
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '.../apps/api/.build/src/app' imported from .../apps/api/.build/src/lambda.js
root/apps/api
- /src
  - app.ts // exports the express app
  - lambda.ts
  - server.ts // used to run normal express server
- package.json
- serverless.yml
- tsconfig.json

lambda.ts/js

import serverless from "serverless-http";
import { app } from "./app";
export const handler = serverless(app);

app.ts/js

// express setup
...
export { app };

tsconfig.json

{
  "compilerOptions": {
    "lib": ["ESNext"],
    "module": "ESNext",
    "target": "ESNext",
    "moduleResolution": "Node",
    "esModuleInterop": true,
    "outDir": "dist",
    "baseUrl": ".",
    "strict": true,
    "noImplicitAny": true,
    "resolveJsonModule": true
  },
  "ts-node": {
    "esm": true,
    "experimentalSpecifierResolution": "node"
  },
  "include": [
    "src/**/*"
  ]
}

serverless.yml

service: api
frameworkVersion: '3'

plugins:
  - serverless-plugin-typescript
  - serverless-offline

provider:
  name: aws
  runtime: nodejs18.x

functions:
  api:
    handler: src/lambda.handler
    events:
      - httpApi: '*'

Running with ts-node works perfectly 🤷🏻‍♂️

Strydom commented 1 year ago

I needed to use webpack to bundle everything together

avfigueredo commented 1 year ago

@Strydom Have you fixed this problem?

Strydom commented 1 year ago

I actually switched to using esbuild instead, was a lot easier to setup imo because it does everything from bundling things together to compiling TS.

b3nk3 commented 7 months ago

@Strydom my workaround was to just build first, with esbuild then run serverless-offline. Did can this be configured in a way so I don't have to implement my own watch mode? (nodemon)