aws-amplify / aws-amplify/docs

document function build issues with esbuild in monorepos, with pnpm, yarn

Open
#7,634 5 comments 5 reactions 0 assignees View on GitHub
amplify/backend p3
Dominant language
MDX
Stars
506
Forks
1.1k
Avg merge
3h 14m
Merged PRs (30d)
1

Description

**Describe the content issue**:
A clear and concise description of what the content issue is. Is there content missing or is there incorrect content?

add a (temporary) troubleshooting doc to callout the need for installing esbuild at the monorepo root when using yarn, pnpm, or other package manager install strategies that symlink the esbuild bin in monorepo packages

https://github.com/aws-amplify/amplify-backend/issues/1512

when executing `pnpm ampx sandbox` from within the monorepo package CDK fails to execute esbuild for Function builds in the target directory

```
➜ p ampx sandbox

Amplify Sandbox

Identifier: josef
Stack: amplify-identityprovidersbackend-josef-sandbox-04818156ae

To specify a different sandbox identifier, use --identifier

Unable to build the Amplify backend definition.
Caused By: Error: Failed to bundle asset amplify-identityprovidersbackend-josef-sandbox-04818156ae/auth/SecretFetcherResourceProviderLambda/Code/Stage, bundle output is located at /Users/josef/Documents/projects/aws-amplify/amplify-gen2-identity-providers/packages/identity-providers-backend/.amplify/artifacts/cdk.out/bundling-temp-bb3b79a8a866090c1bd808cc6e9822677dbcd6fd39430da733e289729027d116-error: Error: bash -c pnpm exec -- esbuild --bundle "/Users/josef/Documents/projects/aws-amplify/amplify-gen2-identity-providers/node_modules/.pnpm/@aws-amplify+backend@1.0.3_@aws-sdk+client-cloudformation@3.598.0_@aws-sdk+client-s3@3.598.0__tn7afzbpzntiestvo3f3w5qwye/node_modules/@aws-amplify/backend/lib/engine/backend-secret/lambda/backend_secret_fetcher.js" --target=node18 --platform=node --outfile="/Users/josef/Documents/projects/aws-amplify/amplify-gen2-identity-providers/packages/identity-providers-backend/.amplify/artifacts/cdk.out/bundling-temp-bb3b79a8a866090c1bd808cc6e9822677dbcd6fd39430da733e289729027d116/index.js" --external:@aws-sdk/* run in directory /Users/josef/Documents/projects/aws-amplify/amplify-gen2-identity-providers exited with status 254
at AssetStaging.bundle (/Users/josef/Documents/projects/aws-amplify/amplify-gen2-identity-providers/node_modules/.pnpm/aws-cdk-lib@2.146.0_constructs@10.3.0/node_modules/aws-cdk-lib/core/lib/asset-staging.js:2:619)

Resolution: Check your backend definition in the `amplify` folder for syntax and type errors.
```

However if you wrap `ampx sandbox` in an npm script and run with `npm run dev`, for example, it works fine. Otherwise you will need to install `esbuild` at the project root where CDK is executing from. Since pnpm will only link the bin in the directory in which it is specified as a dependency, we receive a vague error

**URL page where content issue is**:

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.