Ejecutar un comando en JavaScript
execFile con un arreglo de argumentos, promisificado y con await.
import { execFile } from "node:child_process";
import { promisify } from "node:util";
const run = promisify(execFile);
const { stdout } = await run(process.execPath, ["-e", "console.log(21 * 2)"]);
console.log(stdout.trim());
try {
await run(process.execPath, ["-e", "process.exit(3)"]);
} catch (error) {
console.log("exit code:", error.code);
}
Cómo funciona
- Pasa los argumentos como arreglo: sin shell, sin bugs de comillas.
- La promesa se rechaza con salida distinta de cero y trae stderr.
spawnes la alternativa en streaming para salidas grandes.
Palabras clave y builtins usados aquí
awaitcatchconstfromimporttry
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 349
- Tokens
- 86
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 47 segundos.
Paso 2 de 3 en Crypto y procesos; paso 16 de 18 en Node.js.