【Node.js24.x】Object::execFile()メソッドの使い方
execFileメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
execFileメソッドは、外部コマンドやプログラムを直接実行するメソッドです。Node.jsアプリケーションから、システムにインストールされている実行可能ファイル(例えば、lsコマンドやPythonスクリプトなど)を子プロセスとして起動し、その結果を取得するために利用されます。
このメソッドの大きな特徴は、シェルを介さずに直接コマンドを実行する点です。これにより、child_process.execメソッドのようにシェルを起動するオーバーヘッドがなく、より高速かつ安全に処理を行えます。特に、ユーザーからの入力をコマンドの引数として渡す場合でも、シェルインジェクションといったセキュリティリスクを軽減できる利点があります。
execFileメソッドは、実行するコマンドのパス、そのコマンドに渡す引数の配列、オプションオブジェクト、そして実行結果を処理するコールバック関数を引数として受け取ります。コマンドの実行が完了すると、指定したコールバック関数が呼び出され、コマンドの実行中に発生したエラー、標準出力の内容、標準エラーの内容を受け取ることが可能です。これにより、外部プログラムの成否や、その出力結果をNode.jsアプリケーション内で非同期的に処理し、後続のロジックに組み込むことができます。
システムユーティリティの実行、外部ツールとの連携、またはビルドプロセスの一部を実行する際など、Node.jsアプリケーションがオペレーティングシステムレベルの機能と連携する必要がある場合に非常に有用です。非同期処理であるため、外部コマンドの実行中にアプリケーションのメインスレッドがブロックされることなく、応答性を維持できます。
構文(syntax)
1const { execFile } = require('node:child_process'); 2 3execFile('node', ['-v'], (error, stdout, stderr) => { 4 if (error) { 5 console.error(error.message); 6 return; 7 } 8 console.log(stdout); 9});
引数(parameters)
file, args, options, callback
- file: string: 実行するファイルのパス
- args: string[] | null: 実行するファイルに渡す引数の配列、またはnull
- options: object | null: 実行時のオプションを指定するオブジェクト、またはnull
- callback: function: コマンド実行完了後に呼び出されるコールバック関数
戻り値(return)
ChildProcess
ChildProcessオブジェクトを返します。このオブジェクトは、実行された子プロセスを表し、その標準入出力や終了ステータスなどの情報を取得・操作するために使用できます。