Node.js EPIPE错误

时间:2013-02-05 08:23:33

标签: javascript node.js socket.io

我有一个由node.js服务器和其他文件以及HTML文件组成的应用程序。 HTML文件是我的客户端,它必须与node.js服务器通信。 node.js服务器使用与其他node.js文件一起创建的对象使用以太网电缆与PLC通信。 所以我在服务器和客户端之间创建了一个socket.io连接,并在服务器和PLC之间建立了一个tcp连接。

现在错误:如果我启动服务器和连接所有电缆的客户端我得到了PLC的正确答案,如果我在运行时断开电缆我得到以下错误:

events.js:71
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: write EPIPE
    at errnoException (net.js:770:11)
    at Socket._write (net.js:552:19)
    at Socket.write (net.js:511:15)
    at Timer.<anonymous> (C:\Users\Massimo\workspace\Scada\plc_driver\fw_driver.
js:289:20)
    at Timer.exports.setInterval.timer.ontimeout (timers.js:234:14)

我已经尝试使用代码

管理服务器中的错误
communication_socket.on('error', function () {
    console.log('Error!');
});

我正在运行节点0.8.18并且所有软件包都已更新(我已经做了 npm update -g

修改 代码的结果

process.on('uncaughtException', function(err) {
    console.log(util.inspect(err));
});

是:

{ [Error: write EPIPE] code: 'EPIPE', errno: 'EPIPE', syscall: 'write' }

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

套接字IO错误不会以您可以尝试/捕获它们的方式抛出。您必须为每个套接字添加on('error', [callback])处理程序。您可以在Should stream.pipe forward errors?中阅读有关此问题的一些相关讨论。您没有说明为什么您有超时以及超时写入的套接字,所以我无法帮助您。

答案 1 :(得分:0)

Metor中的部署命令失败后出现此错误。我能够通过在调试模式下运行应用程序,单击功能断点,然后再次运行部署脚本来修复它。我希望这有助于某人。