节点:所需文件的名称冲突
Node: name collision on required files
感谢阅读!
如何避免名称冲突?这是我的问题吗?这个词合适吗?
我是node的新手&Javascript和编写一个应用程序,可以与不同类型的网络设备(tcp on 23)对话。
我决定为每个设备创建一个单独的js文件,并在我的app.js
文件中require
它们。
当我启动应用程序时,apple1
连接,但一旦banana1
连接,我就失去了与apple1
的连接。我没有从apple1
得到断开连接的消息。
我怀疑有某种类型的变量名冲突,因为当我改变苹果最后连接的顺序时,香蕉是我失去连接的那个。为了支持我的怀疑,在我分配self = this;
的banana.js
中,我将其更改为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');
})
apple.js
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');
});
}
banana.js
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');
});
}
如何避免名称冲突?
不要使用(隐式)全局变量
这是我的问题吗?
是的。这是你造成的,你需要解决它。
这个词合适吗?
是的!
如何修复?
不要重命名碰撞变量,而是使用var
将其声明为本地变量。
如何预防?
对你所有的文件使用严格模式,你会得到一个异常在分配给未声明的全局变量
相关文章:
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 包含文件时发生冲突
- 我的React应用程序的根文件夹与React Router冲突
- 如何在没有冲突的情况下将 JQuery 包含在 JavaScript 文件中
- 如何创建具有多个可能冲突的要求的.d.ts文件
- Jest 无法构建依赖关系图,源文件和构建文件之间存在冲突
- 由于添加或删除文件而导致的文件冲突,引导弹出框不起作用
- 冲突安全追加到约曼生成器中的现有文件
- 如果我使用两个不同的 IDE 打开源代码文件,是否有任何冲突
- jQuery文件冲突
- Chrome扩展:jQuery.js在后台文件中与网站中的插件冲突
- wordpress安装中多个js文件之间的冲突
- 将几个java脚本组合到一个.js文件中,现在具有冲突的onload函数
- RateIt jquery插件创建一个冲突的jquery文件,我在我的项目
- Garmin prototype.js与本地jquery文件冲突
- 如何防止一个JavaScript文件与另一个冲突?
- 节点:所需文件的名称冲突
- 如何解决多个js文件冲突问题
- 与本地策略的冲突在两个单独的文件中
- Javascript / jquery文件相互冲突