Node.jsのchild_process:execのコールバックにあるstderrの文字化け化
ElectronアプリをChild Processで起動したいと思います。
import ChildProcess, {ChildProcess as ChildProcess__type, ExecException} from 'child_process';
const childProcess: ChildProcess__type = ChildProcess.exec(
'electron ProjectInitializer__ElectronMain.js',
{ cwd: __dirname },
(error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => {
if (error) {
console.log('----');
console.log(stderr);
}
}
);
ご覧の様に、console.log(stderr);
にあるstderr
は文字化けされていますので、アプリが起動してくれない原因がわかりません。
因みに、
import executeExternalCommand, { ExecaReturnValue } from 'execa';
try {
await executeExternalCommand(
'electron',
['ProjectInitializer__ElectronMain.js'],
{ cwd: __dirname }
);
} catch (error) {
console.error(error);
}
は動いています。でも、execaについて情報が少ないので、これを使って、子プロセスからconsole.log()
を表示させる方法がなかなか見つかりません。