본문 바로가기

목록이 없습니다.

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

Framework/Electron

     

    상황

    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