在Amplify上托管Nx Monorepo时构建失败的修复求助
修复Nx Monorepo在Amplify Gen2上的构建错误
问题根源
自动生成的amplify.yml配置存在两个核心问题:
- Backend命令未在正确的目录执行,导致找不到
backend.ts文件 - Frontend部分的构建命令、输出路径与Nx的目录结构不匹配,引发构建路径不存在的错误
正确的amplify.yml配置
替换自动生成的配置为以下内容,注意根据你的实际前端应用名称(比如web-app)调整:
version: 1 applications: - backend: phases: build: commands: - cd packages/backend - npm ci --cache .npm --prefer-offline - npx ampx pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID appRoot: packages/backend - frontend: phases: preBuild: commands: - npm ci --cache .npm --prefer-offline build: commands: - npx nx build web-app --prod artifacts: baseDirectory: dist/apps/web-app files: - '**/*' cache: paths: - .npm/**/* - node_modules/**/* - nx-cache/**/* buildPath: dist/apps/web-app appRoot: .
关键调整说明
- Backend部分:先进入
packages/backend目录再执行部署命令,确保能正确找到backend.ts文件 - Frontend部分:
- 构建命令改为
npx nx build web-app --prod,对应你创建的前端应用名称 baseDirectory和buildPath指向Nx构建后的标准输出目录dist/apps/web-app- 增加Nx缓存路径
nx-cache/**/*,提升后续构建效率 appRoot设为根目录(./),因为Nx需要从工作区根目录执行项目构建命令
- 构建命令改为
验证步骤
- 本地执行
npx nx build web-app --prod,确认dist/apps/web-app目录生成且包含完整的前端产物 - 将调整后的
amplify.yml提交到代码仓库 - 触发Amplify重新构建
内容的提问来源于stack exchange,提问作者JosephHung
相关产品推荐
相关产品推荐

