본문 바로가기

Cloud Providers/AWS

[AWS]React ERR: missing script

Codepipeline을 사용하여 프론트엔드 앱을 깃허브 소스를 빌드하여 s3에 배포하는 것을 자동화하고자 한다.

 

build단계에서 다음과 같은 에러를 만났다.

[Container] 2022/04/05 02:33:37 Running command npm run build
npm ERR! missing script: build

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2022-04-05T02_33_37_516Z-debug.log

[Container] 2022/04/05 02:33:37 Command did not exit successfully npm run build exit status 1
[Container] 2022/04/05 02:33:37 Phase complete: BUILD State: FAILED
[Container] 2022/04/05 02:33:37 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: npm run build. Reason: exit status 1

그래서 프론트엔드의 package.json 파일의 스크립트를 살펴보았다.

  "scripts": {
    "start": "REACT_APP_ENDPOINT=https://228faf5b-1111-47cb-a9a4-4ef8d5b56142.mock.pstmn.io react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },

build 스크립트는 잘 들어가 있고, 로컬에서 buildspec.yml에 따른 명령을 실행해도 빌드가 잘된다.

 

Codepipeline 설정 시, 하나 다른 점은 우분투 이미지를 ...standard:4.0을 사용하였다는 것이다. 그래서 최신 이미지를 사용하여 우분투 20.04로 최대한 로컬환경과 비슷하게 해주었다.

 

그래도 실패했다.

 

다른 방법도 실행해 보았다.

 

원인

  • 처음에 작업을 진행하던 P2-teamA 레포지토리에 프론트엔드 파일을 클론하여 작업을 진행하였다.
  • 그 프론트엔드 파일은 .git을 포함한 파일로, P2-teamA를 모두 커밋, 푸쉬를 통해 깃허브에 올려도 조회가 되지 않았다.
  • 보안문제인가? 하여간 build단계에서 소스를 제대로 가져올 수 없었다.

해결

  • 해당 프론트엔드 파일에 접속하여 .git 파일을 삭제하고 다시 깃허브에 푸쉬에 보았다. 그래도 조회가 안되었다.
  • 프론트엔드 파일을 따로 포크하여 클론해서 사용했더니 되었다.