공식문서의 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 글에서 대안을 찾을 수 있었다.
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
'RUN' 카테고리의 다른 글
오픈그래프(og) 로컬에서 테스트하기 (0) | 2025.03.19 |
---|---|
Next.js App Router에서 다국어 지원하기 (2) i18n 적용편 (next-intl) (2) | 2025.02.07 |
Next.js에서 다국어 지원하기 (1) google spreadsheet 연동편 (0) | 2025.01.22 |
프론트엔드에서 로그인/회원가입 기능 구현 (JWT를 곁들인) (1) | 2025.01.14 |