我有一个如下所示的模块:
module.exports = {
port: '1337',
facebook: {
clientID: '123456789',
clientSecret: 'a1b2c3d4e5f6g7h8i9j0k',
callbackURL: 'http://localhost:1337/oauth/facebook/callback'
}
};
我想要做的是使用callbackURL中的port变量:
callbackURL: 'http://localhost:1337/oauth/facebook/callback'
我试过了:
callbackURL: 'http://localhost:'+ this.port +'/oauth/facebook/callback'
但显然这不正确,因为facebook是另一个对象。所以,有人可以解决这个问题,并且欢迎你提出任何额外的阅读材料(就更深入的理解而言)。
答案 0 :(得分:9)
只需在module.exports
上方将其声明为普通变量:
var port = '1337';
module.exports = {
port: port,
facebook: {
clientID: '123456789',
clientSecret: 'a1b2c3d4e5f6g7h8i9j0k',
callbackURL: 'http://localhost:'+ port + '/oauth/facebook/callback'
}
};
您可以将module.exports
放在文件中的任何位置,甚至可以执行某些逻辑(例如从文件或其他资源中检索设置)。
答案 1 :(得分:0)
我一直使用下面的结构
const that = module.exports = {
port: '1337',
facebook: {
clientID: '123456789',
clientSecret: 'a1b2c3d4e5f6g7h8i9j0k',
callbackURL: `http://localhost:${that.port}/oauth/facebook/callback`
}
};
即使您尝试在最外面的对象中使用this.port
,它也仍然无法获得理想的结果,因为this
不会指向您在{{ 1}}。我不确定答案是什么-并非双关语。我仍在研究和尝试找出更多信息,一旦我知道更多信息便可以报告。