Node.jsで子プロセスを実行する方法とエラーの解析


  1. child_process.exec()メソッド:

    const { exec } = require('child_process');
    exec('ls', (error, stdout, stderr) => {
    if (error) {
    console.error(`エラーが発生しました: ${error.message}`);
    return;
    }
    if (stderr) {
    console.error(`エラー出力: ${stderr}`);
    return;
    }
    console.log(`実行結果: ${stdout}`);
    });

    この例では、exec()メソッドを使用してシェルコマンド ls を実行しています。エラーが発生した場合は、errorオブジェクトが返され、エラーメッセージが表示されます。また、stderrにエラー出力が含まれている場合もあります。正常に実行された場合は、結果がstdoutに表示されます。

  2. child_process.spawn()メソッド:

    const { spawn } = require('child_process');
    const ls = spawn('ls', ['-lh', '/usr']);
    ls.stdout.on('data', (data) => {
    console.log(`標準出力: ${data}`);
    });
    ls.stderr.on('data', (data) => {
    console.error(`エラー出力: ${data}`);
    });
    ls.on('close', (code) => {
    console.log(`プロセス終了コード: ${code}`);
    });

    この例では、spawn()メソッドを使用して新しいプロセスを生成し、ls -lh /usrコマンドを実行しています。標準出力とエラー出力はそれぞれstdoutおよびstderrイベントで処理されます。プロセスの終了時には、closeイベントが発生し、終了コードが表示されます。

  3. child_process.execFile()メソッド:

    const { execFile } = require('child_process');
    const child = execFile('node', ['--version'], (error, stdout, stderr) => {
    if (error) {
    console.error(`エラーが発生しました: ${error.message}`);
    return;
    }
    console.log(`実行結果: ${stdout}`);
    });

    この例では、execFile()メソッドを使用してnode --versionコマンドを実行しています。子プロセスが終了すると、コールバック関数が呼び出され、結果がstdoutに表示されます。

これらはNode.jsで子プロセスを実行するための一部の方法です。エラーハンドリングは重要な要素であり、上記の例ではエラーオブジェクトの処理やエラーメッセージの表示方法が示されています。また、他のパラメータやオプションも使用できますので、公式ドキュメントを参照することをおすすめします。