当我得到以下错误:

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)

我该采取什么程序来修理呢?

作者注:这个错误的许多问题鼓励我发布这个问题,以供将来参考。

相关问题:

using spawn function with NODE_ENV=production node.js child_process.spawn ENOENT error - only under supervisord spawn ENOENT node.js error https://stackoverflow.com/questions/27603713/nodejs-spawn-enoent-error-on-travis-calling-global-npm-package Node JS - child_process spawn('npm install') in Grunt task results in ENOENT error Running "foreman" task Fatal error: spawn ENOENT unhandled error event in node js Error: spawn ENOENT at errnoException (child_process.js:975:11) Node.js SpookyJS: error executing hello.js https://stackoverflow.com/questions/26572214/run-grunt-on-a-directory-nodewebkit Run exe file with Child Process NodeJS Node: child_process.spawn not working on Java even though it's in the path (ENOENT) spawn ENOENT error with NodeJS (PYTHON related) image resizing is not working in node.js (partial.js) (non-installed dependency) npm install error ENOENT (build dependency problem) Cannot install node.js - oracle module on Windows 7 (build dependency problem) Error installing gulp using nodejs on windows (strange case)


当前回答

在运行测试用例时,我也遇到了这个恼人的问题,所以我尝试了许多方法来解决它。但对我来说,有效的方法是在包含主文件的目录中运行你的测试运行器,其中包含你的nodejs衍生函数,如下所示:

nodeProcess = spawn('node',params, {cwd: '../../node/', detached: true });

例如,这个文件名是test.js,所以只需移动到包含它的文件夹。在我的例子中,它是这样的测试文件夹:

cd root/test/

然后从运行您的测试运行程序,在我的情况下,它是摩卡,所以它将是这样的:

mocha test.js

我浪费了一天多的时间来弄清楚。享受! !

其他回答

我也遇到了同样的问题,但我找到了一个简单的解决方法。 如果程序已经被用户添加到PATH(例如,正常的系统命令工作),它似乎是spawn()错误。

要解决这个问题,你可以使用which模块(npm install——save which):

// Require which and child_process
const which = require('which');
const spawn = require('child_process').spawn;
// Find npm in PATH
const npm = which.sync('npm');
// Execute
const noErrorSpawn = spawn(npm, ['install']);

我发现一个案例不在这个列表中,但它值得添加:

在Alpine Linux上,如果可执行文件不兼容,Node将会出现ENOENT错误。

Alpine期望使用libc生成二进制文件。使用glibc编译的可执行文件(例如chrome作为chromium的一部分)作为系统调用的包装器,在spawn调用ENOENT时将失败。

我在windows 8上得到了同样的错误。问题是由于系统路径的环境变量丢失。将“C:\Windows\System32\”值添加到系统PATH变量中。

虽然对某些人来说这可能是一个环境路径或其他问题,但我刚刚在Windows 10上为Visual Studio Code安装了Latex Workshop扩展,并在尝试构建/预览PDF时看到了这个错误。作为管理员运行VS Code为我解决了这个问题。

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

步骤

进入我的电脑和属性 点击高级设置 然后是环境变量 选择Path,然后单击edit 如果不存在,则粘贴以下文件:C:\Windows\System32\ 关闭命令提示符 运行您想要运行的命令