You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS CodePipeline部署Angular 7至S3时遇ng build错误排查求助

Fixing ng build Exit Status 1 in AWS CodeBuild for Angular 7

Let's break down the issues in your buildspec.yml and fix them step by step—most of the problems stem from version compatibility and configuration mismatches for Angular 7:

1. Angular CLI Version Compatibility

Angular 7 requires a specific version of the Angular CLI (v7.x), but you're installing the latest version which is incompatible. This is a top cause of ng build failures for older Angular versions.

2. NPM Version Mismatch with Node.js 10

Node.js 10 works best with NPM 6.x; installing npm@latest could introduce compatibility issues that break dependency installations.

3. Incomplete Build Command

You're running ng build without specifying the production configuration. While your BUILD_ENV is set to prod, you need to pass this to the build command to trigger production optimizations and avoid default dev-build-related errors.

4. Artifacts & S3 Path Configuration

Your artifacts section uses an invalid path pattern (- '/' won't match any files), and you're not accounting for how Angular 7 structures the dist folder—it creates a subfolder named after your Angular project, not just files at the dist root.


Modified buildspec.yml

Here's the corrected version with explanations for each change:

version: 0.2
env:
  variables:
    S3_BUCKET: "<bucket name>"
    BUILD_ENV : "prod"
    # Replace with your actual Angular project name (matches the folder in dist/)
    ANGULAR_PROJECT_NAME: "your-angular-app-name"
phases:
  install:
    runtime-versions:
      nodejs: 10
    commands:
      # Install NPM version compatible with Node 10
      - echo Installing compatible NPM version...
      - npm install npm@6 -g
      # Install Angular CLI v7.x (matches Angular 7)
      - echo Installing Angular CLI 7...
      - npm install -g @angular/cli@7
  pre_build:
    commands:
      - echo Installing project dependencies...
      # Add --force to resolve peer dependency warnings common in Angular 7
      - npm install --force
  build:
    commands:
      - echo Build started on `date`
      # Trigger production build using your BUILD_ENV variable
      - ng build --configuration=$BUILD_ENV
  post_build:
    commands:
      - echo Clearing S3 bucket...
      - aws s3 rm s3://${S3_BUCKET} --recursive
      # Copy the correct dist subfolder (Angular 7 builds into dist/<project-name>)
      - aws s3 cp dist/${ANGULAR_PROJECT_NAME} s3://${S3_BUCKET} --recursive
      - echo Build completed on `date`
artifacts:
  files:
    # Match all files in the project's dist subfolder
    - '**/*'
  base-directory: 'dist/${ANGULAR_PROJECT_NAME}'
  discard-paths: yes

Key Changes Explained:

  • Angular CLI Version: Explicitly installing @angular/cli@7 ensures full compatibility with your Angular 7 application.
  • NPM Version: Using npm@6 avoids stability issues with Node.js 10.
  • Build Command: ng build --configuration=$BUILD_ENV properly triggers the production build (you can also use --prod as a shorthand for Angular 7).
  • S3 Copy Path: Targeting dist/${ANGULAR_PROJECT_NAME} ensures you're copying the actual build files, not just the empty parent dist folder.
  • Artifacts Configuration: Fixed the file pattern to **/* to capture all build assets, and set the base directory to your project's specific dist subfolder.

Additional Troubleshooting Tips:

  • If errors persist, check the CodeBuild logs for specific dependency conflicts or missing packages—this will give you the exact root cause.
  • Ensure your CodeBuild service role has the necessary S3 permissions (s3:PutObject, s3:DeleteObject, etc.) for your target bucket.
  • Verify your Git repo includes both package.json and package-lock.json—missing lock files can lead to inconsistent dependency installs across builds.

内容的提问来源于stack exchange,提问作者Pratik soni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:39:19