RUN

Next.js Build Error: bcrypt 모듈 문제 해결하기

ssoonn 2025. 2. 12. 11:45

 

공식문서의 dashboard app 예제를 따라하던 중, vercel 배포 단계에서 에러가 발생했다.

건든게 없는데 에러가 나서 억울하긴 하다.......

 

pnpm run build     

> @ build /path/to/project
> next build

   ▲ Next.js 15.1.7

   Creating an optimized production build ...
 ✓ Compiled successfully
 ✓ Linting and checking validity of types    
   Collecting page data  ...[Error: Cannot find module '/path/to/project/node_modules/.pnpm/bcrypt@5.1.1/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node'
Require stack:
- /path/to/project/node_modules/.pnpm/bcrypt@5.1.1/node_modules/bcrypt/bcrypt.js
- /path/to/project/.next/server/app/seed/route.js
- /path/to/project/node_modules/.pnpm/next@15.1.7_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/next/dist/server/require.js
- /path/to/project/node_modules/.pnpm/next@15.1.7_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/next/dist/server/load-components.js
- /path/to/project/node_modules/.pnpm/next@15.1.7_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/next/dist/build/utils.js
- /path/to/project/node_modules/.pnpm/next@15.1.7_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/next/dist/build/worker.js
- /path/to/project/node_modules/.pnpm/next@15.1.7_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/next/dist/compiled/jest-worker/processChild.js] {
  code: 'MODULE_NOT_FOUND',
  requireStack: [Array]
}

> Build error occurred
[Error: Failed to collect page data for /seed] { type: 'Error' }
 ELIFECYCLE  Command failed with exit code 1.

 

 

원인

이 오류는 bcrypt 라이브러리 때문이다.

bcrypt 라이브러리는 비밀번호 해싱을 위해 네이티브 모듈(bcrypt_lib.mode)를 사용하는데, 이 네이티브 모듈이 손상되었거나 빌드 환경에 맞게 설치되지 않았을 때 발생한다고 한다.

 

Require stack을 보아하니 bcrypt가 내부적으로 bcrypt_lib.node 파일을 불러오려다가 실패했다는 걸 알 수 있다.

 

해결 방법

 1. 의존성 재설치

이런 문제가 발생했을 때의 가장 먼저 할 것: 노드 모듈 지우고 재설치하기

rm -rf node_modules
rm pnpm-lock.yaml
pnpm install

 

2. bcrypt 제거 후 재설치, 혹은 재빌드

pnpm remove bcrypt
pnpm add bcrypt

또는

pnpm rebuild bcrypt

 

 

1, 2를 모두 시도해보았으나 해결되지 않았다.

노드 버전을 확인해도 문제가 없는걸요?

 

구글링 하던 중 찾은 1년 전 reddit 글에서 대안을 찾을 수 있었다.

공식 문서에서도 bcryptjs를 대안으로 제시하고 있다

3. 대체 패키지인 bcryptjs 사용하기

pnpm remove bcrypt
pnpm add bcryptjs

 

bcryptjs는 순수 JavaScript로 작성되어 있어 네이티브 바인딩 관련 문제가 발생하지 않는다.

이렇게 하고 import 부분까지 수정했더니 무리 없이 빌드 성공~

 

 

 

 

 

+ 추가 자료

https://it-hhhj2.tistory.com/103

 

Nodejs Webpack으로 빌드하는 과정에서 발생한 에러(ERROR in ./node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.j

Webpack으로 build 하는 과정에서 발생한 에러 [error#1] bcrypt 모듈 관련 에러 문제 ERROR in ./node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js 112:15-30 module not found: error: can't resolve 'nock' in ~ 회원가입 및 로그인

it-hhhj2.tistory.com