1. 배경 상황

node.js(Express.js)프로젝트의 EKS 배포를 위한 CodePipeline CI/CD 구성 중 노드 프로젝트를 불러와서 npm install로 패키지를 설치하는 도중 다음과 같은 경고 메시지가 발생했다.

npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!
EEXIST: file already exists

2. 해결 방법

여기서 중요한 메시지는 EEXIST: file already exists 라는 메시지. package-lock.json 파일 및 node_modules가 기존에 이미 존재하고 있기 때문에 npm install로 새로운 모듈을 받지 못한다는 메시지였는데, 로컬이었다면 수작업으로 package-lock.json파일과 node_modules 라는 디렉터리를 삭제해줄 수도 있었겠지만, CodeBuild상에서 삭제하는 과정이 필요했기 때문에 아래와 같이 package.json 파일에서 해당 파일들을 삭제해주는 "clean" scripts를 추가해주고,

"scripts": {
    "clean": "rm package-lock.json; rm -rf node_modules",
    "init": "rm ./bin/*",
    "start": "nodemon ./server.js",
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "npm run init; pkg . --out-path bin"
  },

CodeBuild위에서 실행할 명령어들을 정의하는 buildspec.yaml 파일에 npm run clean 커맨드를 추가했더니 위와 같은 에러가 해결되었다.