Node.js v4.4.4を使用しており、.bat
node.jsのファイル。
私のノードアプリのjsファイルの場所から、次のパス(ウィンドウプラットフォーム)でコマンドラインを使用して.batを実行できます。
'../src/util/buildscripts/build.bat --profile ../profiles/app.profile.js'
しかし、ノードを使用すると実行できませんが、特定のエラーはスローされません。
ここで何が間違っていますか?
var ls = spawn('cmd.exe', ['../src/util/buildscripts', 'build.bat', '--profile ../profiles/app.profile.js']);
ls.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
ls.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
次のスクリプトは私の問題を解決しました、基本的に私はしなければなりませんでした:
.batファイルへの絶対パス参照への変換。
配列を使用して引数を.batに渡します。
var bat = require.resolve('../src/util/buildscripts/build.bat');
var profile = require.resolve('../profiles/app.profile.js');
var ls = spawn(bat, ['--profile', profile]);
ls.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
ls.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
有用な関連記事のリストの下:
https://nodejs.org/api/child_process.html#child_process_asynchronous_process_creation
https://nodejs.org/api/child_process.html#child_process_spawning_bat_and_cmd_files_on_windows
次のようなコマンドを実行できるはずです。
var child_process = require('child_process');
child_process.exec('path_to_your_executables', function(error, stdout, stderr) {
console.log(stdout);
});