Skip to content

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

Open
@josefaidt

Description

@josefaidt

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

aws-amplify/amplify-backend#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/@[email protected]_@[email protected]_@[email protected]__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/[email protected][email protected]/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:

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions