How do I debug “Error: spawn ENOENT” on node.js?

后端 未结 25 2700
轻奢々
轻奢々 2020-11-22 03:00

When I get the following error:

events.js:72
        throw er; // Unhandled \'error\' event
              ^
Error: spawn ENOENT
    at errnoException (chil         


        
25条回答
  •  梦如初夏
    2020-11-22 03:32

    How to research the spawn call raising the error:

    • Use NODE_DEBUG=child_process, Credits to @karl-richter. Simple, quick, October 2019
    • Use a wrapper to decorate child_process.spawn, Credits to @jiaji-zhou. Simple, quick, January 2015
    • Long procedure, credits to @laconbass. Complex, time-cost, December 2014

    Known, usual causes

    1. Environment issues

      • The command executable does not exist within the system (dependency not being installed). see prominc's answer
      • The command executable does not exist within a directory of those specified by PATH environment variable.
    2. Windows-only bugs/quirks

      • '.cmd' extension / shell: true. see li-zheng answer
      • Administrator permisions. see steve's answer
    3. Wrong spawn('command', ['--argument', 'list'], { cwd, env, ...opts }) usage

      • Specified working directory (opts.cwd) does not exist · see leeroy-brun's answer
      • Argument list within command String spawn('command --wrong --argument list')
      • Env vars within command string spawn('ENV_VAR=WRONG command')
      • Argument list Array specified as String spawn('cmd', '--argument list')
      • Unset PATH env variable spawn('cmd', [], { env: { variable } } => spawn('cmd', [], { env: { ...process.env, variable } }

    There are 2 posible origins for ENOENT:

    1. Code you are writing
    2. Code you depend on

    When origin is code you depend on, usual cause is an Environment Issue (or windows quirk)


提交回复
热议问题