Skip to content
Latchkey

Node "spawn ENOENT" for a Child Process in CI - Fix the Missing Executable

spawn ENOENT means child_process could not find the executable you asked it to run. The binary is not on PATH on the CI runner.

What this error means

A node process that shells out throws Error: spawn <command> ENOENT. The command runs locally but the executable is absent from the runner.

node
Error: spawn git ENOENT
    at ChildProcess._handle.onexit (node:internal/child_process:286:19)
    at onErrorNT (node:internal/child_process:484:16) {
  errno: -2, code: 'ENOENT', syscall: 'spawn git'
}

Common causes

The executable is not installed on the runner

The CI image lacks the binary the child process invokes, so spawn cannot locate it.

A typo or a shell builtin spawned without a shell

A misspelled command, or a shell builtin spawned without shell: true, has no matching executable on PATH.

How to fix it

Install the executable in CI

  1. Add a setup step that installs the required binary.
  2. Re-run so spawn can find it on PATH.
GitHub Actions
- run: sudo apt-get update && sudo apt-get install -y graphviz

Run shell builtins through a shell

  1. For a shell builtin or pipeline, pass shell: true to spawn.
  2. Otherwise verify the command name is spelled correctly.
JavaScript
spawn('dot -V', { shell: true });

How to prevent it

  • Install every external binary your scripts spawn as an explicit CI setup step, verify command names, and prefer absolute paths or shell: true where appropriate.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →