LoginSignup
4
1

More than 5 years have passed since last update.

WindowsでChildeProcessを使ってもENOENTばかり出てくる際の対処法

Posted at

概要

Electronでマルチプラットフォームなアプリを作ろうとした際、Windowsが行う処理のときにコマンドを叩かせる必要があったため叩かせたところ、落としたバイナリの実行はおろか、echoやcdのような単純なコマンドすらENOENTエラーになる。
検索してもかなり出づらい情報だったため、ここに記載する。

結論

spawnやexecを使う場合はcmdコマンドを叩けばいい。

問題のコード

echoでhogeと言わせたかったが動かなかった。
パスが通ってない様子だがcmdファイルを直接叩いても同じ状況が発生した。
なお、単純にこのままだと文字化けするのであとで直すこと。

const child_process = require("child_process");
let proc = child_process.spawn("echo",["hoge"]);
proc.stdout.on('data',function(data){
  console.log(data);
});

解決策

上記の状況でも何故か動くcmdコマンドに/cオプションをつけて実行すれば解決。
Linuxのcdコマンドみたいにシステムコマンドは特殊な状況でもだいたい動くみたいな感じなんだろうか…

const child_process = require("child_process");
let proc = child_process.spawn("cmd",["/c","echo","hoge"]);//ここでcmdコマンドを使うように書き換える。
proc.stdout.on('data',function(data){
  console.log(data);
});

参考

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1