WindowsでChildeProcessを使ってもENOENTばかり出てくる際の対処法
概要
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);
});
参考
Author And Source
この問題について(WindowsでChildeProcessを使ってもENOENTばかり出てくる際の対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/Hayakuchi0/items/5c2f457e136926849bee著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .