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

如何在Node.js中引用module.exports中的变量,node.js,Node.js,我有一个模块编写如下: module.exports = { port: '1337', facebook: { clientID: '123456789', clientSecret: 'a1b2c3d4e5f6g7h8i9j0k', callbackURL: 'http://localhost:1337/oauth/facebook/callback' } }; 我想做的是在callbackURL中使用port变量:

我有一个模块编写如下:

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是另一个对象。因此,有人能解决这个问题吗?欢迎阅读您的任何其他阅读资料(就更深入的理解而言)。

只需在
模块上方声明即可。将
导出为普通变量:

var port = '1337';
module.exports = {
    port: port,
    facebook: {
        clientID: '123456789',
        clientSecret: 'a1b2c3d4e5f6g7h8i9j0k',
        callbackURL: 'http://localhost:'+ port + '/oauth/facebook/callback'
    }
};

您可以将
module.exports
放入文件中的任何位置,甚至可以执行某些逻辑(例如从文件或其他资源检索设置)

我一直使用下面的结构

const that = module.exports = {
    port: '1337',
    facebook: {
        clientID: '123456789',
        clientSecret: 'a1b2c3d4e5f6g7h8i9j0k',
        callbackURL: `http://localhost:${that.port}/oauth/facebook/callback`
    }
};

即使您试图在最外层的对象中使用
this.port
,它仍然不会给出所需的结果,因为
this
不会指向您在
模块.exports中导出的对象。我不确定这个问题的答案——没有双关语的意思。我仍在研究和试验,以了解更多信息,一旦我了解更多信息,可以向您汇报。

太好了,谢谢-在接受宽限期结束后,我会尽快接受答案。再次查看后,没有什么可以阻止您引用
模块。导出
模块内的
。导出对象本身。但是使用较短的引用名,
,在本例中,
较短,这样可以减少混乱,从而使代码看起来更整洁。