폐쇄망에서 Next-JS 구동이 매우느린경우 확인사항

Table of Contents

1. 개요

간혹 인터넷이 되지 않는 폐쇄망에서 Next-JS 를 구동해야 하는경우가 있다 (공공, 은행 프로젝트 등) 이런 환경에서 폐쇄망 nexus 를 사용했을 때 어느날 갑자기 개발모드 (npm run dev) 가 매우 느려지는 현상이 있을 수 있다. 이번 포스팅에서는 그러한 현상중 한가지를 짧게 이야기 해보려 한다. (필자가 직접 겪은 현상이다)

2. 원인

폐쇄망에서 npmrcrepository 를 지정해 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 = {}; /** 이부분 */
... 중략 ...

만약 포스팅에서와 같은 조건에 같은 현상이라면 해당 수정으로 해결이 될 것이다.

( 그렇지 않더라도 폐쇄망에서는 해당코드가 하등 도움되지 않기 때문에 처리해주는것을 추천한다)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다