일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 려려
- 3000 port kill
- window netstat time wait 제거
- conda 가상환경 설정 오류
- conda base 기본 설정
- 티스토리챌린지
- time wait port kill
- conda base 활성화
- 오블완
- conda 기초 설정
- 실행중인 포트 죽이기
- Today
- Total
모도리는 공부중
[React] 프로세스 구동 시 찍히는 'onBeforeSetupMiddleware option' is deprecated. 문제 해결 본문
[React] 프로세스 구동 시 찍히는 'onBeforeSetupMiddleware option' is deprecated. 문제 해결
공부하는 모도리 2023. 9. 8. 15:54React 웹을 npm run start
로 실행하면, 정상 실행 직전 터미널에 꼭 찍히는 내용이 있다.
(node:35656) [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE]
DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated.
Please use the 'setupMiddlewares' option.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:35656) [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE]
DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated.
Please use the 'setupMiddlewares' option.
나는 실행에는 문제 없으니 계속 넘어갔었는데, 시험 인증 받는 과정에서 해당 부분을 수정사항으로 트집 잡히게 될까봐 염려가 된 디자이너(프론트 겸업 중)님께서 해당 문제를 고치는 방안을 검색해서 적용하셨는데 git push가 안된다고 이야기해주셨다. 왜인고 하니..
[블로그] onAfterSetupMiddleware is Deprecated | onBeforeSetupMiddleware is Deprecated 문제 해결방법
위 글을 참고해서 적용해주셨는데, 위 글에서 참고한 내용이 github issues에 올라온 내용이었고, 많은 사람들이 이 문제를 어떻게 해결할 것인지에 열띤 토론의 장을 펼치고 있었다.
디자이너님 말씀대로 분명 수정이 됐고 프로세스를 실행하면 더 이상 해당 주의 문구가 뜨지 않는다. 하지만 이 수정 방법에는 문제가 있었으니, 바로 node_modules
내부에 있는 라이브러리를 직접 수정했다는 것이다.
node_modules
의 경우 용량이 매우 큰 관계로 대부분 package.json
에 dependencies 버전을 명시해서 그것만 서로 git push & pull로 공유를 한다. node_modules
자체를 git에 올리지 않는다. git add & commit할 때 포함돼서 올라가지 않도록 .gitignore
파일에 /node_modules
를 추가까지 해준다. 우리가 추가해주지 않아도 이미 설정되어 있기도 하다.
그럼 어떤 문제가 발생하느냐? git commit을 할 수 없고 다른 사람들과 해결한 내용을 공유할 수도 없다.
다른 해결 방법을 찾아봐야 한다.
github issues 내용을 계속 아래로 스크롤하다보면 react-scripts 모듈의 버전 문제라고 말해주고 있다.
5.0 이상 버전으로 업그레이드한 경우 동일한 문제가 발현한다는 것이었고, 5.70.0에서 컴파일되었다는 내용이다. 그래서 우리에게 설치된 버전이 몇인지 확인해봤더니, "react-scripts": "^5.0.1"이었다. 어? 이건가보다.
어째서인지 9개의 싫어요를 받았지만, 위 내용에서 말하는 react-scripts 모듈의 문제가 맞는 것 같다는 생각이 들었다. 그래서 다른 내용들을 읽으면서 스크롤을 좀 더 내려보았더니, 아래와 같이 2개의 좋아요와 5개의 싫어요, 1개의 하트를 받은 미묘한 글을 발견하게 된다.
코멘트에서 말하는 링크를 쫓아가본 결과, 필요한 내용을 얻을 수 있었다.
→ DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated
클릭해보면 Update all modules to the latest version으로 자동 스크롤이 될건데, 내용 그대로다.
모든 모듈을 업데이트(npm update
)하고, npm audit fix --force
로 수정해주는 것이다.
이 방법을 시도하기 전, 내 상태를 먼저 점검해볼 필요가 있다.
$ npm version
{
test: '0.1.0',
npm: '9.6.5',
node: '16.13.2',
v8: '9.4.146.24-node.14',
uv: '1.42.0',
zlib: '1.2.11',
brotli: '1.0.9',
ares: '1.18.1',
modules: '93',
nghttp2: '1.45.1',
napi: '8',
llhttp: '6.0.4',
openssl: '1.1.1l+quic',
cldr: '39.0',
icu: '69.1',
tz: '2021a',
unicode: '13.0',
ngtcp2: '0.1.0-DEV',
nghttp3: '0.1.0-DEV'
}
나의 npm 버전은 9.6.5이고 node 버전은 16.13.2이다. 이제 업데이트를 진행하고 audit fix --force까지 진행해주자.
상당히 많은 내용이 Deprecated되고 수정이 일어난다.
이 과정이 끝나고 나면 package.json에 변동이 생기게 되는데, 딱 하나의 모듈만 버전이 다운그레이드된 것을 확인할 수 있다.
아까 예상해 마지 않았던 "react-scripts": "^4.0.3" 변경을 확인하고 변경된 패키지 목록에 맞게 npm install을 다시 진행하면, 일해라~~ 절해라~(이래라 저래라)하던 주의 문구가 더 이상 터미널에 찍히지 않고 프로세스가 정상 작동되는 것을 확인할 수 있게 된다.
npm version은 다시 확인해봤지만 큰 변동은 없어 보인다. 아예 없나?
$ npm version
{
test: '0.1.0',
npm: '9.6.5',
node: '16.13.2',
v8: '9.4.146.24-node.14',
uv: '1.42.0',
zlib: '1.2.11',
brotli: '1.0.9',
ares: '1.18.1',
modules: '93',
nghttp2: '1.45.1',
napi: '8',
llhttp: '6.0.4',
openssl: '1.1.1l+quic',
cldr: '39.0',
icu: '69.1',
tz: '2021a',
unicode: '13.0',
ngtcp2: '0.1.0-DEV',
nghttp3: '0.1.0-DEV'
}
아무튼 문제 해결 완료!