본문 바로가기

Server/Node.js

Node.js Build시 Error 137 발생 원인 및 해결법

잡담

더보기

기존에 만들었던 프로젝트를 서버 내에서 빌드하려고 하니 이상하게 빌드가 안 된다. 에러코드는 137. 깊이 들어가 원인을 분석하니 대강 다음과 같았다.

 

1. npm install 이나 node.js로 build할 경우, 일부 종속성 패키지들은 미리 빌드된 상태로 받아오는것이 아니라, 구동하는 서버에서 직접 빌드하도록 되어있다.

 

2. 이 과정에서 python이나 VS (정확히는 .NET Framework라고 하더라)를 요구하는 경우가 있다. 여기서도 오류가 발생해서 한참 해멨는데, 특히 python의 경우 3 버전과 2 버전을 구분하니 혹시 빌드 오류가 나는 경우 확인해보는것이 좋다.

 

3. 어찌됐든 모든 문제를 해결하고 나니 에러코드 137이 일어난다.

본론

간단하게 말하면, 문제는 RAM 용량이 부족한 것이다. 해결법은 두 가지이다.

 

1. Linux의 Swap 기능을 이용하여 임시로 메모리를 확보한다. (https://hiseon.me/linux/linux-swap-file/)

2. 그냥 RAM이 더 많은 서버를 이용한다.

 

설명

메모리가 부족하다고 해서 프로젝트를 최적화하면 되겠거니 했는데, 그게 아니었다. node-gyp 빌드 시 빌드 툴이 차지하는 메모리가 있는데, 여기에서 걸리는 문제라 아마 최적화로는 해결이 어려울 듯 싶다.

 

내 경우는 그냥 기존 Lightsail서버를 1gb로 바꾸고 스냅샷을 통해 옮겼다. EC2였다면 그냥 확장 가능했겠지만...

 

 

 

 

'Server > Node.js' 카테고리의 다른 글

JWT의 개념, 프론트엔드에서 해야 할 일  (3) 2020.03.16