728x90
- Vue.js : ERR_OSSL_EVP_UNSUPPORTED
예전에 공부했던 Vue.js를 복습하려고 npm run build를 했더니 아래와 같은 에러가 발생하였다.
더보기
npm run build
> response-check@1.0.0 build
> webpack --watch webpack is watching the files…
node:internal/crypto/hash:79
this[kHandle] = new _Hash(algorithm, xofLen, algorithmId, getHashCache());
Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:79:19) at Object.createHash (node:crypto:139:10)
at module.exports (D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\webpack\lib\util\createHash.js:90:53)
at NormalModule._initBuildHash (D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\webpack\lib\NormalModule.js:401:16)
at handleParseError (D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\webpack\lib\NormalModule.js:452:10)
at D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\webpack\lib\NormalModule.js:484:5
at D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\webpack\lib\NormalModule.js:343:12
at D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at Array.<anonymous> (D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
at Storage.finished (D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
at D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
at D:\git\Vue.js\vue-webgame\4.반응속도체크\node_modules\graceful-fs\graceful-fs.js:123:16
at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3)
{
opensslErrorStack: [
'error:03000086:digital envelope routines::initialization error',
'error:0308010C:digital envelope routines::unsupported'
],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
- 해결방법
이 오류는 Node.js와 OpenSSL 간의 호환성 문제로 발생하였다. Node.js 17 이상에서 OpenSSL 3.0이 기본적으로 사용되면서 발생한 것.. (이전 공부할 때의 Node 버전은 16이였는데, 지금은 22라서)
Node의 버전을 낮추는 방법도 있지만, 매우 비효율적이기에 환경 변수를 설정하여 실행하려 한다.
// 기존 구문
"scripts": {
"build": "webpack --watch",
"dev": "webpack-dev-server --hot"
},
// 수정한 구문
"scripts": {
"build": "set NODE_OPTIONS=--openssl-legacy-provider && webpack --watch",
"dev": "webpack-dev-server --hot"
},
728x90