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)
Run Code Online (Sandbox Code Playgroud)
作者说明:此错误的许多问题鼓励我发布此问题以供将来参考.
相关问题:
我正在编写一些节点shell脚本,以便在平台上进行开发时使用.我们有Mac和Windows开发人员.我可以在Node中检查一个变量,在一个实例中运行.sh文件,在另一个实例中运行.bat吗?
我正在使用spawn生成一个长时间运行的进程,该进程将输出随时间发送到stdio,并由我的nodejs脚本读取和处理.棘手的部分是我无法保证发送的命令始终有效.如何在产卵时发现错误?最好这不涉及安装全局异常处理程序,因为我不想处理任何其他异常.(如果这是唯一的方法,我需要弄清楚生成的进程何时正确启动然后卸载处理程序,这是一个混乱,我宁愿不进入.)
我想要运行的代码是这样的:
var spawn = require('child_process').spawn;
try {
spawn("zargle");
} catch (e) {
console.error("I'm handling the error!");
}
Run Code Online (Sandbox Code Playgroud)
但这只会在节点事件循环中的某处产生一个uncaughtException,大概是因为调用是异步的,甚至没有尝试在我的脚本的时间片上启动子进程.
需要捕获的唯一异常是当spawn完全无法启动进程时(例如,名称不正确并且抛出ENOENT).我(此时)并不关心衍生过程可能产生的任何问题.
类似但不同:如何在node.js上调试"错误:生成ENOENT"?
我确切地知道为什么我会获得ENOENT,而且我知道要改变什么以避免错误发生.我的问题是如果错误是不可避免的,如何优雅地回应这种情况.