Netlify 빌드 에러 - The engine node is incompatible with this module. Expected version >=12.
Netlify 빌드 에러
Netlify로 블로그 CD를 걸어놨는데 다음과 같은 에러가 떨어진다.
6:40:06 PM: error meros@1.1.4: The engine "node" is incompatible with this module. Expected version ">=12".
노드버전?
해결 - .node-version 추가
솔루션 자체는 심플하다. 원하는 node버전을 .node-version 파일에 적어주면 된다. 위치는 프로젝트 최상위 폴더에 두자.
echo '14' > .node-version
원인 - 빌드이미지의 기본 node 버전 문제
1차시도 : Build Image 변경
기존에 이용하던 빌드 이미지가 Ubuntu 16.04였다. 에러메세지는 Gatsby(meros1.1.4)가 node 12 이상의 버전을 원한다는 내용이었으므로 빌드이미지를 Ubuntu 20.04로 변경하였으나 node 버전이 12 미만인지 해결되지 않았다.
2차 시도 : .node-version
node.js의 버전관리방법은 익숙하지 않지만 프로젝트 내부에서 버전 표기를 해두면 빌드타임에 해당 버전을 땡겨오나보다! 세상에! .node-version, .nvmrc 등 방법이 있지만 netlify 문서의 제일 첫 파일인 .node-version에 버전을 기입하였다.
https://docs.netlify.com/configure-builds/manage-dependencies/#node-js-and-javascript
재밌는 점은 메이저 버전(나의 경우 14)만 적어두면 stable latest를 바로 땡긴다는 점. 로컬에서는 14.15.4를 쓰고 있는데 deploy log를 보니 14.17.5를 설치한다.
6:45:13 PM: Attempting node version '14' from .node-version6:45:14 PM: Downloading and installing node v14.17.5...6:45:14 PM: Downloading https://nodejs.org/dist/v14.17.5/node-v14.17.5-linux-x64.tar.xz...6:45:14 PM: Computing checksum with sha256sum6:45:14 PM: Checksums matched!