리액트로 과제를 하던 중에 npm 패키지 중 보안에 취약한 패키지가 있다고 먼저 해결하라는 경고가 떴다. 그 밑에는 "npm audit fix --force" 명령어가 있었다. 이 경고를 계속 보고 무시했지만, 계속 뜨는게 눈에 걸려서 해당 명령어를 실행해보았다. 그런데 갑자기 리액트에서 npm start를 할 때 오류가 발생했다..
- 오류 메시지
Error: digital envelope routines::unsupported
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
위 메시지에 대한 해결은 stackoverflow에서 react 폴더에 있는 package.json에서 다음을 수정하라고 한다. 이렇게 수정하니 실제로 잘 해결되었다.
- 리액트 폴더 내 package.json
"scripts": {
"start": "export SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts start",
"build": "export SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts build"
}
하지만 나는 친구과 협업해서 과제를 하고 있었고, package.json을 변경하기 번거로웠다. 계속 에러를 찾아보니 node.js를 v.18로 업데이트하면 React가 실행이 안된다는 글을 보았다. 그래서 node의 버전을 관리해주는 nvm을 설치하고 node 버전을 v.16.13으로 downgrade 시켰더니 package.json 폴더를 수정하지 않고도 잘 해결되었다!
- nvm 설치를 잘 정리해놓은 사이트
https://gist.github.com/falsy/8aa42ae311a9adb50e2ca7d8702c9af1
정리하면, npm 패키지에 보안에 취약한 패키지가 있다며 npm audit fix --force 명령어를 실행하라고 하면 무시해도 될듯 하다.. 해당 취약점은 사용자 관점에서는 크게 문제되지 않는다고 한다.