
옛날 리액트 코드를 볼일이 있어서 신나게 npm start 때렸더니 에러가 떴습니다.
npm i 할때부터 deprecated!!! deprecated!! 하더니 역시나…
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:79:19)
at Object.createHash (node:crypto:139:10)
...
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
원인은?
- Node.js 17+ 버전에서 OpenSSL v3가 기본 적용되면서 Webpack(react-scripts 포함)과의 호환 문제로 발생하는 에러였슴다. (webpack 구버전이 OpenSSL 을 지원 못한다 카더라)
해결 방법
1. 직접 옵션 추가
package.json → scripts에 --openssl-legacy-provider 옵션 추가
"scripts": {
"start": "react-scripts --openssl-legacy-provider start",
"build": "react-scripts --openssl-legacy-provider build"
}
2. Node.js 버전 조정
- nvm 또는 Node 버전 관리 도구 사용
- Node 16 (LTS) 또는 Node 18 (LTS) 버전으로 변경
nvm install 16
nvm use 16
정리
- Node 최신 버전과 구버전 webpack 충돌 문제입니다.
- 빠른 해결은? --openssl-legacy-provider 옵션을 추가해주는 것이고요.
- 근본 해결은? vite로 마이그레이션해서 node 22 사용하도록 하는것 또는 cra 유지 필요한 케이스는 node 버전을 낮춰서 LTS 버전(Node 16/18) 을 사용하는 것을 권장합니다요.
'개발 > 개발 일지' 카테고리의 다른 글
| github 에서 삭제한 branch 로컬에 남아있는 경우 해결법 (0) | 2025.10.18 |
|---|---|
| next.js 버전 업데이트하면서 알게 된 pnpm add / up 차이 (0) | 2025.09.02 |