我的Node.js应用程序的配置文件如下所示:
// Development specific configuration
// ==================================
module.exports = {
....
ip: "localhost",
//Rabbit MQ
rabbitmq: {
username: 'foo',
password: 'bar',
ip: 'amqp://'+this.username+':'+this.password+'@rabbitmq',
queues: {
name: 'foo'
}
},
....
};
以下是我使用此配置文件时模块的外观:
var config = require ('../../config/environment');
this.con = amqp.connect (config.rabbitmq.ip);
我的用户名和密码未定义:
amqp://undefined:undefined@rabbitmq
我尝试了多种方法,例如:
在对象内创建getter函数,如下所示:
rabbitmq: {
username: 'foo',
password: 'bar',
getUsername: function (){
return this.username;
},
getpassword: function (){
return this.password;
},
ip: 'amqp://'+this.getUsername()+':'+this.getpassword()+'@rabbitmq',
创建一个自我值并指定'this'并引用它:
self: this,
...
ip: 'amqp://'+self.rabbitmq.username+':'+self.rabbitmq.password+'@rabbitmq',
...
我无法让范围正常工作。我错过了什么基本的东西?我怎样才能做到这一点? 请帮忙。
答案 0 :(得分:0)
这将有效:
var username = 'foo';
var password = 'bar';
module.exports = {
ip: "localhost",
//Rabbit MQ
rabbitmq: {
username: username,
password: password,
ip: 'amqp://'+username+':'+password+'@rabbitmq',
queues: {
name: 'foo'
}
}
};
答案 1 :(得分:0)
您可以这样做:
var config = {
ip : "localhost", //Rabbit MQ
rabbitmq : {
username : 'foo',
password : 'bar',
queues : {
name : 'foo'
}
}
};
config
现在在模块范围内声明,因此您可以重用其值
config.rabbitmq.ip = 'amqp://' + config.rabbitmq.username + ':' + config.rabbitmq.password + '@rabbitmq';
module.exports = config;