Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Node.js24.x】Object::execFileSync()メソッドの使い方

execFileSyncメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

execFileSyncメソッドは、Node.js環境で外部のコマンドやプログラムを同期的に実行するメソッドです。このメソッドは、指定されたコマンドの処理が完了するまでNode.jsアプリケーションのイベントループを一時的にブロックし、子プロセスの実行を待ちます。これにより、外部コマンドの実行結果を直ちに取得し、次の処理に利用することが可能になります。

このメソッドを使用する際には、第一引数に実行したいコマンドのパスまたは名前を指定します。第二引数には、コマンドに渡す引数を文字列の配列として設定できます。さらに、第三引数にはオプションオブジェクトを渡すことで、子プロセスの動作を詳細に制御できます。例えば、プロセスの実行ディレクトリ(cwd)、環境変数(env)、標準入出力の形式(stdio)、処理の最大時間(timeout)、出力のエンコーディング(encoding)などを設定できます。

execFileSyncは、子プロセスの実行が正常に終了した場合、その標準出力の内容をBufferオブジェクトまたは指定されたエンコーディングの文字列として返します。もし子プロセスがエラー終了したり、タイムアウトが発生したりした場合は、エラーがスローされるため、適切なエラーハンドリングの実装が重要です。

同期処理であるため、execFileSyncは長時間かかる処理や、アプリケーションの応答性が求められる場面での使用には注意が必要です。メインスレッドがブロックされることで、他の非同期処理が停止し、アプリケーション全体のパフォーマンスに影響を与える可能性があります。したがって、比較的に短時間で完了するコマンドの実行や、起動スクリプト、ユーティリティツールとの連携など、結果を即座に必要とするユースケースに適しています。

構文(syntax)

1const { execFileSync } = require('child_process');
2
3// 外部コマンドを同期的に実行し、その標準出力を文字列として取得します。
4const output = execFileSync('ls', ['-lh', '/tmp'], { encoding: 'utf8' });
5
6console.log(output);

引数(parameters)

command, args = [], options = {}

  • command: string: 実行するコマンドのパスまたはコマンド名
  • args: string[] = []: コマンドに渡す引数の配列
  • options: object = {}: コマンドの実行方法を制御するオプションオブジェクト

戻り値(return)

Buffer | string

指定されたコマンドを実行し、その標準出力を返します。戻り値は、Bufferオブジェクトまたは文字列になります。

関連コンテンツ