11

我有一个由 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' }

有什么建议吗?

4

2 回答 2

10

套接字 IO 错误不会以您可以尝试/捕获它们的方式抛出。on('error', [callback])您必须为每个套接字添加一个处理程序。您可以在应该 stream.pipe 转发错误中阅读一些相关讨论吗? 你没有说为什么你有一个超时以及超时写入哪个套接字,所以我不能帮助你更多。

于 2013-05-12T04:23:30.187 回答
-1

Metor 中的部署命令失败后出现此错误。我可以通过在调试模式下运行应用程序、单击函数断点然后再次运行部署脚本来修复它。我希望这可以帮助别人。

于 2015-02-06T21:04:21.230 回答