일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Container vs VM
- 냅색 알고리즘
- 깊이 우선 탐색
- 구현
- lazy evaluation
- 모듈러 연산 분배법칙
- Python
- error:0308010C:digital envelope routines::unsupported
- 그래프탐색
- 그래프 이론
- dfs
- npm start
- 수학
- 그래프 탐색
- 최장공통부분수열
- 일단 시도
- 나는 바보야...
- db replication
- 다이나믹 프로그래밍
- 배낭 문제
- LCS 알고리즘
- Docker 원리
- bfs
- 파이썬
- 너비 우선 탐색
- 동적 계획법
- 최장공통부분문자열
- 정처기 필기
- 문자열
- 클래스
- Today
- Total
Save my data
(리액트)error:0308010C:digital envelope routines::unsupported 해결 본문
npm audit fix --force 이후에 npm start를 하니 아래와 같은 에러코드가 뜨면서 실행이 안됬다.
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at module.exports (F:\GitHub_management\projects\react-todo\node_modules\webpack\lib\util\createHash.js:90:53)
at NormalModule._initBuildHash (F:\GitHub_management\projects\react-todo\node_modules\webpack\lib\NormalModule.js:386:16)
at F:\GitHub_management\projects\react-todo\node_modules\webpack\lib\NormalModule.js:418:10
at F:\GitHub_management\projects\react-todo\node_modules\loader-runner\lib\LoaderRunner.js:367:11
at F:\GitHub_management\projects\react-todo\node_modules\loader-runner\lib\LoaderRunner.js:233:18
at context.callback (F:\GitHub_management\projects\react-todo\node_modules\loader-runner\lib\LoaderRunner.js:111:13)
at F:\GitHub_management\projects\react-todo\node_modules\babel-loader\lib\index.js:51:103 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v18.16.0
현재 Node.js 최신 버전을 사용하고 있다는 것을 알 수 있다.
구글링하여 원인을 찾았다.
error-0308010C-digital envelope routines--unsupported
해당 포스트는 에러에 대한 내용과 도움받은 참고 사이트를 기록하는 글입니다.
velog.io
원인 요약 :
Webpack 빌드 프로세스에는 MD4 알고리즘이 사용되는데,
최신 Node.js 버전에서는 MD4 알고리즘이 더 이상 지원되지 않기 때문에 발생하는 문제였다.
즉, 최신 버전의 Node.js와 기존 Webpack의 버전 간 차이로 인해 발생하는 호환성 이슈였던 것이다.
(무턱대고 최첨단 버전을 사용하는게 이래서 안좋다. 가급적 스테이블 버전을 쓰자.)
이와 관련하여 아래와 같은 해결책을 찾았다.
How to Fix error:0308010C:digital envelope routines::unsupported
To fix the error:0308010C:digital envelope routines::unsupported, enable the legacy provider for Node.js by passing --openssl-legacy-provider flag to webpack.
www.datainfinities.com
해결책 요약 :
package.json 파일에 다음의 명령어를 자신의 개발 환경에 맞게 입력해주면 된다.
# for macOS, Linux or Windows Git Bash
export NODE_OPTIONS=--openssl-legacy-provider
# for Windows CMD (Command Prompt)
set NODE_OPTIONS=--openssl-legacy-provider
# for Windows PowerShell
$env:NODE_OPTIONS="--openssl-legacy-provider"
# for Docker (in your Dockerfile)
ENV NODE_OPTIONS="--openssl-legacy-provider"
나는 윈도우 환경에서 사용중이기 때문에 아래와 같은 상태에서,
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
...
},
이렇게 바꿔서 해결했다.
"scripts": {
"start": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start",
"build": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts build",
...
},
의문점 :
참고한 공식 문서에서는 해결법으로 아래와 같이 작성하라고 지시하고 있다.
{
"scripts": {
"start": "react-scripts start --openssl-legacy-provider",
}
}
1. 그런데 이렇게 작성하면 실행이 안된다.
(--openssl-legacy-provider 부분을 앞으로 빼면 터미널에서 명령어 인식을 못한다.)
2. 그리고 빌드와 관련해서 발생하는 문제인데 왜 start부분만 바꾸라고 지시하고 있는지도 모르겠다.
(위 처럼 build부분을 빼고 start만 수정해도 잘 켜지긴 한다.)
'개인공부' 카테고리의 다른 글
오버헤드(Overhead) (0) | 2023.09.12 |
---|---|
Docker와 VM의 차이 (0) | 2023.09.12 |
정처기 필합 후기 (0) | 2023.03.13 |
신입 개발자로서 보았던 첫 면접에 대한 회고 (0) | 2023.03.08 |
웹 서버와 웹 애플리케이션 서버의 차이에 대한 포스트 (0) | 2023.02.16 |