如何在Node.js中引用module.exports中的变量

时间:2015-01-12 20:58:35

标签: node.js

我有一个如下所示的模块:

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是另一个对象。所以,有人可以解决这个问题,并且欢迎你提出任何额外的阅读材料(就更深入的理解而言)。

2 个答案:

答案 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}}。我不确定答案是什么-并非双关语。我仍在研究和尝试找出更多信息,一旦我知道更多信息便可以报告。