# 에러 로그
Error: error:0308010C:digital envelope routines::unsupported
Quasar로 구축된 Vue.js 프로젝트에서
위와 같은 에러가 발생했습니다.
Node.js v17부터 OpenSSL 3.0이 기본적으로 포함되어 있기 때문에
이전 버전의 암호화 알고리즘(legacy 알고리즘)을 사용하는
패키지나 라이브러리에서는 호환성 문제가 발생하게 됩니다.
해결 방법 함께 알아봅시다. 😀
📝 해결 방법
해당 깃허브 이슈를 살펴보면 webpack 4버전에서 이슈가 존재하는 듯 합니다.
⦁ 방법 1. OpenSSL 레거시 모드 활성화
Node.js v17 이상을 유지하면서 문제를 해결하려면 openSSL의 레거시 모드를 활성화해야 합니다.
// 방법 1. 실행 명령에 옵션 추가
node --openssl-legacy-provider app.js
// 방법 2. 패키지 스크립트 수정
// package.json
"scripts": {
"dev": "quasar dev", // 기존 실행 코드
"dev2": "export NODE_OPTIONS=--openssl-legacy-provider && quasar dev", // 옵션 추가 실행 코드
},
이 방법은 빠르고 간단하며, 스크립트에 옵션을 추가하는 것만으로 해결이 가능합니다.
⦁ 방법 2. Node.js 버전 다운그레이드
Node.js 버전을 17 아래 버전으로 설정하면 해결이 됩니다.
nvm 혹은 IDE의 디버그 세팅에서 Node.js 버전을 변경하고 실행해 보세요. 😎
추천 방식
- 새로운 프로젝트 또는 Node.js 최신 기능이 필요한 프로젝트:
openssl-legacy-provider 방법을 사용. - 장기적으로 유지될 프로젝트나 구버전 라이브러리가 많은 경우:
Node.js 버전을 16(LTS)로 다운그레이드.
프로젝트의 특성과 상황에 맞게 선택하세요 !
하지만 근본적인 해결책은 패키지의 최신 버전을 점검하고,
가능하다면 버전업을 하는 게 좋겠습니다. 😎
참고 문헌 :
https://wiki.openssl.org/index.php/OpenSSL_3.0#Upgrading_to_OpenSSL_3.0_from_OpenSSL_1.0.2
https://stackoverflow.com/questions/69962209/what-is-openssl-legacy-provider-in-node-js-v17
'Back-End > Node.js' 카테고리의 다른 글
[Node.js] React와 Express로 CRUD 게시판 웹 서버 만들기 - 2 (REST API) (2) | 2022.09.22 |
---|---|
[Node.js] Express 웹 서버 만들기 (mySQL 연동) - 1 (0) | 2022.09.13 |