본문 바로가기

목록이 없습니다.

[Electron] electron-builder 빌드 시 Bad text encoding 오류(error)

2021. 1. 12. Framework/Electron
  1.  
  2. 상황
  3. 해결방법
  4. 참고

 

상황

electron 빌드 시 nsis를 사용해서 윈도우 설치파일을 만든다 가정했을 때 아래의 오류가 발생함

 

Bad text encoding: <stdin>:74
Error in script "<stdin>" on line 74 -- aborting creation process
  stackTrace=
  ...

 

뒤에 숫자는 소스에따라 달라질 수 있는데 여기서 중요한것은 빌드에 사용되는 소스중에 nsis에서 현재 호환되지 않는 text encoding이 있다는 것이다. 이 때 대부분은 소스나 경로에 한글이 들어간 경우일 것이다.

 

 

해결방법

이 경우 node_modules 디렉토리 아래에 위치한 모듈 중에 app-builder-lib안에 js파일을 수정해서 nsis로 빌드할 때 UTF8로 하겠다고 옵션을 주면 된다.

 

node_modules/app-builder-lib/out/targets/nsis/NsisTarget.js
async executeMakensis(defines, commands, script) {
  const args = this.options.warningsAsErrors === false ? [] : ["-WX"];

  // 옵션 추가 (add option)
  args.push("-INPUTCHARSET", "UTF8", "-OUTPUTCHARSET", "UTF8");

  for (const name of Object.keys(defines)) {
    const value = defines[name];

    if (value == null) {
      args.push(`-D${name}`);
    } else {
      args.push(`-D${name}=${value}`);
    }
  }
  
  ...

 

async executeMakensis 키워드로 검색하면 금방 찾을 수 있는데 여기서 중요한것은 옵션을 추가하는 라인이다.

const args 초기화 라인 아래에 args에 옵션을 push해주면된다.

 

그리고 다시 빌드를 해보면 문제없이 된다.

 

 

참고

https://github.com/electron-userland/electron-builder/issues/4898