当我得到以下错误:

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)


当前回答

你要改变环境选项吗?

然后看看这个答案。


我试图生成一个节点进程和TIL,您应该在生成时扩展现有的环境变量,否则您将失去PATH环境变量和其他可能重要的环境变量。

这就是我的解决方案:

const nodeProcess = spawn('node', ['--help'], {
  env: {
    // by default, spawn uses `process.env` for the value of `env`
    // you can _add_ to this behavior, by spreading `process.env`
    ...process.env,
    OTHER_ENV_VARIABLE: 'test',
  }
});

其他回答

使用要求(“child_process”)。Exec代替产卵更具体的错误消息!

例如:

var exec = require('child_process').exec;
var commandStr = 'java -jar something.jar';

exec(commandStr, function(error, stdout, stderr) {
  if(error || stderr) console.log(error || stderr);
  else console.log(stdout);
});

在我的例子中,由于没有安装必要的依赖系统资源,我抛出了这个错误。

更具体地说,我有一个使用ImageMagick的NodeJS应用程序。尽管安装了npm包,但核心Linux ImageMagick没有安装。我做了一个apt-get来安装ImageMagick,之后一切都很好!

在花费大量时间调试这个问题之前,大多数情况下可以通过删除node_modules并重新安装包来解决。

如何安装:

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

yarn install --frozen-lockfile

or

npm ci

各自的。如果不是的话

yarn install

or

npm i

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

对于Windows上的ENOENT, https://github.com/nodejs/node-v0.x-archive/issues/2318#issuecomment-249355505修复它。

如更换产卵(npm, [' v '], {stdio:“继承”}):

对于所有node.js版本: 产卵(/ ^赢/ test (process.platform) ?npm。Cmd ': 'npm', ['-v'], {stdio: 'inherit'}) 对于node.js 5。X及以后: 产卵(npm, [' v '], {stdio:“继承”,外壳:真})