Table of Contents
1. 개요
간혹 인터넷이 되지 않는 폐쇄망에서 Next-JS 를 구동해야 하는경우가 있다 (공공, 은행 프로젝트 등) 이런 환경에서 폐쇄망 nexus 를 사용했을 때 어느날 갑자기 개발모드 (npm run dev
) 가 매우 느려지는 현상이 있을 수 있다. 이번 포스팅에서는 그러한 현상중 한가지를 짧게 이야기 해보려 한다. (필자가 직접 겪은 현상이다)
2. 원인
폐쇄망에서 npmrc
의 repository
를 지정해 next-js
에서 개발모드 사용시 HMR(hot-reload
) 구동 초기에 version 정보를 체크하는 부분이 포함되어 timeout 때까지 대기 하는 현상이 있을수 있다.
3. 해결책
단순히 HMR 소스를 수정해 주면 되는데. (폐쇄망 nexus 에서 install 된 패키지는 더이상 version 정보의 변화가 필요 없으므로..) 다음과 같이 처리하면 된다.
- 먼저 node_modules/next/dist/server/dev/hot-reloader-webpack.js 를 편집기로 연다
## 윈도우에서 처리시
notepad ./node_modules/next/dist/server/dev/hot-reloader-webpack.js
## 리눅스 터미널에서 처리시
vim ./node_modules/next/dist/server/dev/hot-reloader-webpack.js
tracedGetVersionInfo
단어를 찾아 아래와 같이 수정한다.
- 수정 전 (this.versionInfo = ...... )
... 중략 ...
async start() {
const startSpan = this.hotReloaderSpan.traceChild("start");
startSpan.stop() // Stop immediately to create an artificial parent span
;
this.versionInfo = await this.tracedGetVersionInfo(startSpan, isTestMode || this.telemetry.isEnabled);
... 중략 ...
- 수정 후 ( this.versionInfo = {} ) 로 수정한다.
... 중략 ...
async start() {
const startSpan = this.hotReloaderSpan.traceChild("start");
startSpan.stop() // Stop immediately to create an artificial parent span
;
this.versionInfo = {}; /** 이부분 */
... 중략 ...
만약 포스팅에서와 같은 조건에 같은 현상이라면 해당 수정으로 해결이 될 것이다.
( 그렇지 않더라도 폐쇄망에서는 해당코드가 하등 도움되지 않기 때문에 처리해주는것을 추천한다)