Electron 라이브러리를 만들면서

Electron 라이브러리를 만들면서

 이전 일렉트론에 대한 포스팅을 하면서 잘못 이해하고 있던 점을 몇 가지 깨달았다.

 일렉트론을 ESM 모듈 시스템, 그러니까 "type" : "module" 형태로 코드를 작성해야한다고 기재했었다.

 하지만 이는 필자가 잘못 알고 있었던 부분이다.

 일렉트론에서는 commonJS 모듈 시스템으로 코드를 작성해야한다. 일렉트론은 node.js의 기본 모듈 시스템인 commonJS 모듈을 따르기 때문이다.

 물론 ESM 모듈 타입으로 코딩하는 것이 불가능한건 아니다. 하지만 일렉트론에 대한 레퍼런스가 대부분 commonJS 타입으로 되어있기 때문에 생산성을 생각하면 commonJS 타입으로 코드를 작성하는 것을 권하고 싶다.

 다만 일렉트론을 웹 프론트엔드와 결합할 때는 일렉트론 진입점인 main.js 확장자 형태가 프론트엔드 프레임워크마다 다르다.

 본 포스팅에서는 react와 next.js에서의 차이점을 다루고자 한다.

 결합한 웹 프론트엔드가 react라면 package.json에 "type": "module"이 필수인 점을 간과하면 안된다. 그리고 그렇기 때문에 일렉트론을 commonJS 타입으로 코딩하기 위해서는 일렉트론 진입점을 main.cjs로 생성해야한다.

 반면 next.js에서는 package.json에 "type": "module"을 선언하면 오류가 발생한다. 기본적으로 next.js는 commonJS 문법을 따른다.

 그래서 next.js에서는 진입점을 굳이 main.cjs로 생성할 필요가 없다. 그냥 main.js로 생성하면 된다.