Javascript 节点:所需文件上的名称冲突
谢谢你的阅读 问题 如何避免名称冲突?这是我的问题吗?这是正确的说法吗 详细信息Javascript 节点:所需文件上的名称冲突,javascript,node.js,Javascript,Node.js,谢谢你的阅读 问题 如何避免名称冲突?这是我的问题吗?这是正确的说法吗 详细信息 var deviceA = require('./apple.js'); var apple1 = new deviceA({ ipAddress: "192.168.1.97", port: 23 }) apple1.connect(); apple1.on('connect', function(data) { console.log('Apple: Device Connected @' + ap
var deviceA = require('./apple.js');
var apple1 = new deviceA({
ipAddress: "192.168.1.97",
port: 23
})
apple1.connect();
apple1.on('connect', function(data) {
console.log('Apple: Device Connected @' + apple1.ipAddress);
})
apple1.on('disconnect', function(data) {
console.log('Apple: Device Disconnected');
})
var deviceA = require('./banana.js');
var banana1 = new deviceA({
ipAddress: "192.168.1.97",
port: 23
})
banana1.connect();
banana1.on('connect', function(data) {
console.log('Banana: Device Connected @' + banana1.ipAddress);
})
banana1.on('disconnect', function(data) {
console.log('Banana: Device Disconnected');
})
var events = require('events');
var Apple = function(opts) {
this.ipAddress = opts.ipAddress;
this.port = opts.port;
};
Apple.prototype = new events.EventEmitter;
module.exports = Apple;
Apple.prototype.connect = function() {
self = this;
// telnet to apple
var net = require('net');
self.connection = net.createConnection(self.port, self.ipAddress);
self.connection.setEncoding("UTF8");
self.connection.on('connect', function(data) {
self.emit('connect');
});
self.connection.on('disconncect', function(data) {
self.emit('disconnect');
});
}
var events = require('events');
var Banana = function(opts) {
this.ipAddress = opts.ipAddress;
this.port = opts.port;
};
Banana.prototype = new events.EventEmitter;
module.exports = Banana;
Banana.prototype.connect = function() {
self = this;
// telnet to banana
var net = require('net');
self.connection = net.createConnection(self.port, self.ipAddress);
self.connection.setEncoding("UTF8");
self.connection.on('connect', function(data) {
self.emit('connect');
});
self.connection.on('disconncect', function(data) {
self.emit('disconnect');
});
}
我是node&javascript新手,我正在编写一个与不同类型的网络设备对话(tcp on 23)的应用程序
我决定为每个设备创建一个单独的js文件,并在我的app.js
文件中要求它们
启动应用程序时,apple1
连接,但只要banana1
连接,我就会与apple1
失去连接。我没有收到来自apple1
的断开连接消息
我怀疑存在某种变量名冲突,因为当我最后更改apple连接的顺序时,香蕉就是我失去连接的那个。为了支持我的怀疑,在我的banana.js
中,我分配self=this代码>,我把它改成了somethingElse=this
。通过这样做,我能够同时连接到两个设备
app.js
var deviceA = require('./apple.js');
var apple1 = new deviceA({
ipAddress: "192.168.1.97",
port: 23
})
apple1.connect();
apple1.on('connect', function(data) {
console.log('Apple: Device Connected @' + apple1.ipAddress);
})
apple1.on('disconnect', function(data) {
console.log('Apple: Device Disconnected');
})
var deviceA = require('./banana.js');
var banana1 = new deviceA({
ipAddress: "192.168.1.97",
port: 23
})
banana1.connect();
banana1.on('connect', function(data) {
console.log('Banana: Device Connected @' + banana1.ipAddress);
})
banana1.on('disconnect', function(data) {
console.log('Banana: Device Disconnected');
})
var events = require('events');
var Apple = function(opts) {
this.ipAddress = opts.ipAddress;
this.port = opts.port;
};
Apple.prototype = new events.EventEmitter;
module.exports = Apple;
Apple.prototype.connect = function() {
self = this;
// telnet to apple
var net = require('net');
self.connection = net.createConnection(self.port, self.ipAddress);
self.connection.setEncoding("UTF8");
self.connection.on('connect', function(data) {
self.emit('connect');
});
self.connection.on('disconncect', function(data) {
self.emit('disconnect');
});
}
var events = require('events');
var Banana = function(opts) {
this.ipAddress = opts.ipAddress;
this.port = opts.port;
};
Banana.prototype = new events.EventEmitter;
module.exports = Banana;
Banana.prototype.connect = function() {
self = this;
// telnet to banana
var net = require('net');
self.connection = net.createConnection(self.port, self.ipAddress);
self.connection.setEncoding("UTF8");
self.connection.on('connect', function(data) {
self.emit('connect');
});
self.connection.on('disconncect', function(data) {
self.emit('disconnect');
});
}
apple.js
var deviceA = require('./apple.js');
var apple1 = new deviceA({
ipAddress: "192.168.1.97",
port: 23
})
apple1.connect();
apple1.on('connect', function(data) {
console.log('Apple: Device Connected @' + apple1.ipAddress);
})
apple1.on('disconnect', function(data) {
console.log('Apple: Device Disconnected');
})
var deviceA = require('./banana.js');
var banana1 = new deviceA({
ipAddress: "192.168.1.97",
port: 23
})
banana1.connect();
banana1.on('connect', function(data) {
console.log('Banana: Device Connected @' + banana1.ipAddress);
})
banana1.on('disconnect', function(data) {
console.log('Banana: Device Disconnected');
})
var events = require('events');
var Apple = function(opts) {
this.ipAddress = opts.ipAddress;
this.port = opts.port;
};
Apple.prototype = new events.EventEmitter;
module.exports = Apple;
Apple.prototype.connect = function() {
self = this;
// telnet to apple
var net = require('net');
self.connection = net.createConnection(self.port, self.ipAddress);
self.connection.setEncoding("UTF8");
self.connection.on('connect', function(data) {
self.emit('connect');
});
self.connection.on('disconncect', function(data) {
self.emit('disconnect');
});
}
var events = require('events');
var Banana = function(opts) {
this.ipAddress = opts.ipAddress;
this.port = opts.port;
};
Banana.prototype = new events.EventEmitter;
module.exports = Banana;
Banana.prototype.connect = function() {
self = this;
// telnet to banana
var net = require('net');
self.connection = net.createConnection(self.port, self.ipAddress);
self.connection.setEncoding("UTF8");
self.connection.on('connect', function(data) {
self.emit('connect');
});
self.connection.on('disconncect', function(data) {
self.emit('disconnect');
});
}
banana.js
var deviceA = require('./apple.js');
var apple1 = new deviceA({
ipAddress: "192.168.1.97",
port: 23
})
apple1.connect();
apple1.on('connect', function(data) {
console.log('Apple: Device Connected @' + apple1.ipAddress);
})
apple1.on('disconnect', function(data) {
console.log('Apple: Device Disconnected');
})
var deviceA = require('./banana.js');
var banana1 = new deviceA({
ipAddress: "192.168.1.97",
port: 23
})
banana1.connect();
banana1.on('connect', function(data) {
console.log('Banana: Device Connected @' + banana1.ipAddress);
})
banana1.on('disconnect', function(data) {
console.log('Banana: Device Disconnected');
})
var events = require('events');
var Apple = function(opts) {
this.ipAddress = opts.ipAddress;
this.port = opts.port;
};
Apple.prototype = new events.EventEmitter;
module.exports = Apple;
Apple.prototype.connect = function() {
self = this;
// telnet to apple
var net = require('net');
self.connection = net.createConnection(self.port, self.ipAddress);
self.connection.setEncoding("UTF8");
self.connection.on('connect', function(data) {
self.emit('connect');
});
self.connection.on('disconncect', function(data) {
self.emit('disconnect');
});
}
var events = require('events');
var Banana = function(opts) {
this.ipAddress = opts.ipAddress;
this.port = opts.port;
};
Banana.prototype = new events.EventEmitter;
module.exports = Banana;
Banana.prototype.connect = function() {
self = this;
// telnet to banana
var net = require('net');
self.connection = net.createConnection(self.port, self.ipAddress);
self.connection.setEncoding("UTF8");
self.connection.on('connect', function(data) {
self.emit('connect');
});
self.connection.on('disconncect', function(data) {
self.emit('disconnect');
});
}
如何避免名称冲突
不要使用变量
这是我的问题吗
对。是你造成的,你需要修复它
这是正确的说法吗
对!
如何修复它
不要重命名冲突变量,但是
如何预防
用于所有文件,分配给未声明的全局变量时会出现异常。所需文件通过文件路径获取。(除非它们在节点_模块中可用)因此,不会发生此类冲突。我可以看到的另一件事是,您正在为这两个设备复制代码。您可以在javascript中创建一个设备类并从中创建两个实例。是的,您缺少self
的var
声明。使用严格模式!!!!调查显示。。。第一答案!