CI에서 Sentry 바이너리 파일을 찾을 수 없다는 에러를 마주했다.
Sentry CLI Plugin: spawn /app/node_modules/@sentry/cli/sentry-cli ENOENT
Sentry CLI가 사용하는 바이너리 파일(sentry-cli
)을 찾지 못했다는 에러이다. 해당 파일은 @sentry/cli
를 설치할 때 postinstall
스크립트로 만들어진다. 모종의 이유로 postinstall
스크립트가 돌지 않은 것이다.
npm@7부터 package-lock
에 패키지의 hasInstallScript
속성이 true여야 패키지의 postinstall
을 돌리게 되었다. 그런데 이 속성은 package-lock
버전 2부터 추가되었다. npm@6으로 패키지를 설치했다면 해당 속성이 없는 것이다. 그런데 npm@7으로 단순 설치(npm install
)는 hasInstallScript
를 추가하지 않는다. 패키지를 직접 제거했다가 다시 설치하는 과정을 거쳐야 해당 속성을 추가한다.
정리하면, npm@6을 사용해 postinstall
을 사용하는 패키지를 설치한 다음 npm@7을 사용하게 되면 postinstall
스크립트가 작동하지 않아서 문제가 생길 수 있다는 것이다. 그리고 이 문제는 hasInstallScript
속성이 없어서 생기는 문제이며, 해당 속성을 넣어주기 위해 postinstall
을 사용하는 패키지를 삭제 후 재설치하여 해결할 수 있다.