一尘不染

如何在node.js上调试“错误:生成ENOENT”?

node.js

当我得到以下错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:1000:11)
    at Process.ChildProcess._handle.onexit (child_process.js:791:34)

我可以按照什么程序来修复它?

作者注意 :许多与此错误有关的问题鼓励我发布此问题以供将来参考。


阅读 279

收藏
2020-07-07

共1个答案

一尘不染

如何研究产生错误的生成调用:

  • 使用NODE_DEBUG = child_process,向@ karl-richter积分。 简单,快速,2019年10月
  • 用包装纸装饰child_process.spawn,@ @ jiaji-zhou。 简单,快捷,2015年1月
  • 漫长的过程,归功于@laconbass。 复杂,耗时,2014年12月

已知的常见原因

  1. 环境问题

    • 该命令可执行文件在系统中不存在(未安装依赖项)。 查看 prominc的答案
    • PATH环境变量指定的目录中,命令可执行文件不存在。
    • 仅Windows的错误/怪癖

    • ‘.cmd’扩展名/ shell:是。 _看到李正回答

    • 管理员权限。
    • spawn('command', ['--argument', 'list'], { cwd, env, ...opts })使用错误

    • 指定的工作目录(opts.cwd)不存在

    • 命令中的参数列表 String spawn('command --wrong --argument list')
    • 命令字符串中的环境变量 spawn('ENV_VAR=WRONG command')
    • 参数列表Array指定为String spawn('cmd', '--argument list')
    • 未设置环境PATH变量 spawn('cmd', [], { env: { variable } } =>spawn('cmd', [], { env: { ...process.env, variable } }

有2个可能的来源ENOENT

  1. 您正在编写的代码
  2. 您依赖的代码

当源是您依赖的代码时,通常的原因是 环境问题 (或Windows怪癖)


2020-07-07