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

当我得到以下错误:

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)

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

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

相关问题:

LEYMandy2020/03/18 16:51:51

添加C:\Windows\System32\path环境变量。

脚步

  1. 转到我的电脑和属性

  2. 点击高级设置

  3. 然后在环境变量

  4. Select Path and then click on edit

  5. Paste the following if not already present: C:\Windows\System32\

  6. Close the command prompt

  7. Run the command that you wanted to run

Windows 8环境变量屏幕截图

梅西里2020/03/18 16:51:51

如果您无法修改其源的应用程序遇到此问题,请考虑使用环境变量NODE_DEBUG设置为调用它child_process,例如NODE_DEBUG=child_process yarn test这将为您提供在哪个目录中调用了哪些命令行的信息,通常最后一个细节是失败的原因。

村村米亚小小2020/03/18 16:51:51

我在Windows 8上遇到了相同的错误。问题是由于缺少系统路径的环境变量。将“ C:\ Windows \ System32 \”值添加到系统PATH变量。

前端伽罗2020/03/18 16:51:51

尝试从Debian Linux系统上的VS Code编辑器中调试node.js程序时遇到此错误。我注意到同一件事在Windows上也可以。之前在此给出的解决方案并没有太大帮助,因为我没有编写任何“生成”命令。有问题的代码大概是由Microsoft编写的,并隐藏在VS Code程序的内部。

接下来,我注意到node.js在Windows上被称为node,但在Debian(以及大概在基于Debian的系统上,例如Ubuntu)上,它被称为nodejs。所以我创建了一个别名-从根终端运行

ln -s / usr / bin / nodejs / usr / local / bin / node

这样就解决了问题。在您的node.js被称为nodejs的其他情况下,相同或相似的过程可能会起作用,但是您正在运行一个期望将其称为node的程序,反之亦然。

泡芙Green阳光2020/03/18 16:51:51

在任何人花费大量时间调试此问题之前,大多数时候可以通过删除node_modules并重新安装软件包来解决

安装:

如果存在锁定文件,则可以使用

yarn install --frozen-lockfile

要么

npm ci

分别地 如果没有

yarn install

要么

npm i
神奇Tony古一2020/03/18 16:51:51

如果不是节点模块,请确保已安装要执行的模块或完整的命令路径

Near小小2020/03/18 16:51:51

就我而言,由于未安装必要的依赖系统资源,导致出现此错误。

更具体地说,我有一个使用ImageMagick的NodeJS应用程序。尽管已安装了npm软件包,但尚未安装核心Linux ImageMagick。我做了一个易于安装ImageMagick的工作,之后一切都变好了!

樱A2020/03/18 16:51:51

对于任何人谁可能在此跌倒,如果所有其他的答案没有帮助,你是在Windows上,知道的是,目前的一个大问题与spawn在WindowsPATHEXT环境变量,可能会导致某些呼叫产卵不工作,这取决于如何目标命令已安装。

小宇宙JinJinHarry2020/03/18 16:51:51

正如@DanielImfeld指出的那样,如果在选项中指定“ cwd”,则将抛出ENOENT,但是给定目录不存在。