【发布时间】:2014-11-29 09:07:23
【问题描述】:
我的 Node.js 脚本在使用 spawn 时由于抛出 ENOMEM(内存不足)errnoException 而崩溃。
错误:
child_process.js:935
throw errnoException(process._errno, 'spawn');
^
Error: spawn ENOMEM
at errnoException (child_process.js:988:11)
at ChildProcess.spawn (child_process.js:935:11)
at Object.exports.spawn (child_process.js:723:9)
at module.exports ([...]/node_modules/zbarimg/index.js:19:23)
我已经在为error 和exit 事件使用侦听器,但如果出现此错误,它们都不会被触发。
我的代码:
zbarimg = process.spawn('zbarimg', [photo, '-q']);
zbarimg.on('error', function(err) { ... });
zbarimg.on('close', function(code) { ... });
完整源代码available.
我可以做些什么来防止脚本崩溃?如何捕获抛出的 ENOMEM 错误?
【问题讨论】:
-
您有可用于复制问题的示例图像吗?
-
当服务器内存不足并且无法使用特定图像复制时会发生这种情况。这使得测试变得困难:-/
-
你在
error处理程序中做什么? -
你找到解决这个问题的方法了吗?
-
我认为这是使用
fork()(底层系统调用)的根本缺陷。见github.com/nodejs/node/issues/25382
标签: javascript node.js error-handling try-catch spawn