Entonces, estoy tratando de usar spawn en mi aplicación Electron para ejecutar el comando flutter --version . Este comando funciona perfectamente bien en mi terminal.
Cada solución que he visto implica que no la tengo en mi variable process.env.PATH . Pero cuando hago un console.log( process.env.PATH ); , la ruta a mi comando Flutter está ahí.
Aquí está el código actual que estoy tratando de ejecutar:
const flutterVer = spawn('flutter', ['--version', '/c']); flutterVer.stdout.on('data', (data) => { console.log(`stdout: ${data}`); });que devuelve:
Uncaught Error: spawn flutter ENOENT at __node_internal_captureLargerStackTrace (node:internal/errors:464:5) at __node_internal_errnoException (node:internal/errors:594:12) at Process.ChildProcess._handle.onexit (node:internal/child_process:282:19) at onErrorNT (node:internal/child_process:477:16) at processTicksAndRejections (node:internal/process/task_queues:83:21) Intenté probar con otro comando, como git --version , y funcionó perfectamente bien.
Encontré una buena solución al usar exec en lugar de spawn así.
const { exec } = require('child_process'); const flutterVer = exec('flutter --version'); flutterVer.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); También tendré que investigar cuáles son las diferencias entre exec y spawn , pero por ahora, hace lo que necesito.