serverless-localstack icon indicating copy to clipboard operation
serverless-localstack copied to clipboard

Stuck on Need a faster logging experience when using serverless-stack with serverless-esbuild

Open keyvhinng opened this issue 1 year ago • 3 comments

After running serverless deploy, the lambda is indeed deployed to LocalStack but the process is still running and stuck on:

Need a faster logging experience than CloudWatch? Try our Dev Mode in Console: run "serverless dev"

How to reproduce:

serverless.yml

service: serverless-localstack

frameworkVersion: "3"

provider:
  name: aws
  runtime: nodejs18.x

plugins:
  - serverless-esbuild
  - serverless-localstack

functions:
  hello:
    handler: handler.hello

handler.ts

export const hello = async (event) => {
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: "Go Serverless",
      input: event,
    }),
  };
};

keyvhinng avatar Feb 21 '24 12:02 keyvhinng

I did a bit of debugging on this and it seems like it might be related to this PR in esbuild.

When serverless-localstack overwrites the esbuild hooks it removes the await this.disposeContexts(); call from the esbuild hook which seems to make esbuild hang.

cpcwood avatar Apr 29 '24 14:04 cpcwood

I have a monorepo with a lot of packages, and just realize that the order matters here, putting esbuild after localstack fixes the issue.

this works: plugins:

  • serverless-localstack
  • serverless-esbuild

this get stuck: plugins:

  • serverless-esbuild
  • serverless-localstack

robertveloso avatar Jun 08 '24 19:06 robertveloso

I have a monorepo with a lot of packages, and just realize that the order matters here, putting esbuild after localstack fixes the issue.

this works: plugins:

* serverless-localstack

* serverless-esbuild

this get stuck: plugins:

* serverless-esbuild

* serverless-localstack

the problem is that this doesn't actually work. None of the lambdas deploy successfully in local stack when i do this even though the deployment completes. It looks like LS plugin has to run first in order to work, so this is not a viable workaround.

brucekaufman avatar Jun 14 '24 00:06 brucekaufman