Node JS检测命名管道是否存在
Node JS detect if named pipe exists
我正在尝试在我的应用程序中使用命名管道。问题是当我尝试在服务器 运行 之前连接到命名管道时,出现以下错误:
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));
使用 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));
});
创建套接字,然后侦听 error
事件,然后 调用 connect
它不会被抛出:https://nodejs.org/api/net.html#net_event_error_1
我正在尝试在我的应用程序中使用命名管道。问题是当我尝试在服务器 运行 之前连接到命名管道时,出现以下错误:
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));
使用 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));
});
创建套接字,然后侦听 error
事件,然后 调用 connect
它不会被抛出:https://nodejs.org/api/net.html#net_event_error_1