我有一个使用winston 和udplogger 的nodejs / express 应用程序。它可以在许多开发环境中正常工作,包括 Linux(Fedora、Centos)、OSX 和各种版本的 Windows。
我们刚刚尝试第一次在 Windows 8 上运行该应用程序,但无法运行它。
dgram.js:163
throw new Error('Socket is already bound');
Error: Socket is already bound
at Socket.bind (dgram.js:163:11)
at UdpLog.connect (\path\to\node_modules\mod_name\lib\winston-udplog.js:147:24)
温斯顿-udplog.js,L47:
return this.socket.bind();
应用程序初始化一个 UDP 记录器(来自此的自定义版本:https ://github.com/indexzero/winston-syslog/blob/master/lib/winston-syslog.js ):
// Initializing the socket...
this.socket = new dgram.Socket("udp4");
// Sending the message... host=localhost, port=514
var buffer = new Buffer(someMsg);
if (buffer.length > 0) { self.socket.send(buffer,0,buffer.length,self.port, self.host, onError);
我已经检查netstat -an
过,UDP 514 上没有 UDP 侦听器(尽管如果其他系统上的 udp:localhost:514 上有侦听器,则代码可以工作),所以对于应用程序崩溃的原因非常迷茫。
关于为什么应用程序崩溃的任何想法?如果我从 winston 配置中删除 UDP 侦听器,它工作正常。
谢谢