인프런 커뮤니티 질문&답변

mememe_0님의 프로필 이미지
mememe_0

작성한 질문수

프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)

자주 사용하는 로더

Hash 에러 발생

작성

·

2.3K

1

안녕하세요 강사님.

제가 npm run build로 빌드를 하려고 할때마다 다음과 같은 에러가 생기더라구요..


[에러 내용]

$ npm run build

> sample@1.0.0 build
> webpack

node:internal/crypto/hash:69
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:69:19)
    at Object.createHash (node:crypto:138:10)
    at module.exports (C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\webpack\lib\util\createHash.js:135:53)
    at NormalModule._initBuildHash (C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\webpack\lib\NormalModule.js:417:16)
    at handleParseError (C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\webpack\lib\NormalModule.js:471:10)
    at C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\webpack\lib\NormalModule.js:503:5   
    at C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\webpack\lib\NormalModule.js:358:12  
    at C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\loader-runner\lib\LoaderRunner.js:373:3
    at iterateNormalLoaders (C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
    at Array.<anonymous> (C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
    at Storage.finished (C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
    at C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
    at C:\Users\power\OneDrive\inflearn\devEnv\sample\node_modules\graceful-fs\graceful-fs.js:123:16   
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {    
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v20.3.0

위의 에러가 왜 발생했는지 찾아봤고 원인과 해결방법을 다음 링크에 정리했습니다.

[정리 링크] https://github.com/SeoMiYoung/Learning/issues/6


결론적으로, npm run build를 하기전에

export NODE_OPTIONS=--openssl-legacy-provider

위의 명령어를 한번 쳐주고, npm run build를 하면, 제대로 빌드가 작동되더라구요..!

그런데 VSCode를 다시 껐다 켜면, 또 다시 위의 명령어를 입력해준 다음에 빌드를 해야되더라구요..

아마, 위의 명령어는 Node.js실행시, OpenSSL의 레거시 프로바이더를 사용하도록 환경변수를 설정해주는 명령어인데, 해당 명령어는 임시적으로 현재 세션에서만 레거시 프로바이더를 사용하도록 해주는 명령어이다보니, VSCode를 껐다 켜는것처럼, 재부팅하거나 새로운 세션을 시작하는 경우에는 환경변수가 초기화되어 다시 설정해줘야되는 것 같아서 그런 것 같더라구요..!

재부팅할때마다 빌드하기전에 해당 명령어를 치고 시작하는게 번거롭습니다..

혹시 해결 방법이 없을까요??


[참고: 버전 정보]

{
  "name": "sample",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack"
  },
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "css-loader": "^4.3.0",
    "file-loader": "^6.2.0",
    "react": "^18.2.0",
    "style-loader": "^1.3.0"
  },
  "devDependencies": {
    "webpack": "^4.46.0",
    "webpack-cli": "^3.3.12"
  }
}

답변 2

0

"build": "NODE_OPTIONS=--openssl-legacy-provider webpack"

0

김정환님의 프로필 이미지
김정환
지식공유자

저도 현상을 재현했습니다. (노드 18 버전으로 빌드)

혹시 노드 13 버전을 사용해 보실수 있을까요? 수업에서 사용한 노드 버전인데 이걸로 바꿔서 빌드하니깐 동작하는걸 확인했습니다.

노드 버전을 여러 개 사용하여야 한다면 nvm를 사용하시면 좋습니다.

그래도 안된다면

  • 노드 13으로 바꾼후,

  • node_modules를 제거하고 npm i 로 패키지 재설치

  • npm run build

로 재시도 한 번 해보세요.

mememe_0님의 프로필 이미지
mememe_0

작성한 질문수

질문하기