我试图在我的应用程序中使用命名管道。问题是,当我试图在服务器运行之前连接到命名管道时,我会得到以下错误:
events.js:141
throw er; // Unhandled 'error' event
^
Error: connect ENOENT \\?\pipe\\testpipe
at Object.exports._errnoException (util.js:870:11)
at exports._exceptionWithHostPort (util.js:893:20)
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1062:14)在尝试连接到管道之前,如何检查管道是否存在?
注意:将连接代码包装在try-catch中并不能防止错误发生。
这是我的代码:
var net = require('net');
var addr = '\\\\?\\pipe\\testpipe';
var client = net.createConnection({ path: addr }, function() {
console.log("Connected");
client.on('data', function(data) {
console.log("Recieved: " + data);
});
client.on('error', function(){
console.log(arguments);
});
}.bind(this));发布于 2016-10-20 17:38:24
使用domain模块可以防止致命错误。以下代码可用于安全运行连接代码。
不是我所期望的,而是封闭的解决方案,因为没有答案。
var net = require('net');
var domain = require('domain');
var addr = '\\\\?\\pipe\\testpipe';
var d = domain.create();
d.on('error', function(err) {
console.error(err);
});
d.run(function() {
var client = net.createConnection({ path: addr }, function() {
console.log("Connected");
client.on('data', function(data) {
console.log("Recieved: " + data);
});
client.on('error', function(){
console.log(arguments);
});
}.bind(this));
});发布于 2017-10-31 20:39:34
创建套接字,然后侦听一个error事件,然后调用connect,它将不会被抛出:1
https://stackoverflow.com/questions/40117966
复制相似问题