NodeJs / Express和模块范围

时间:2014-01-31 00:36:03

标签: node.js express

当我在Express项目的主app.js文件中需要一个模块时,那些模块是否可以从其他模块访问?听起来令人困惑,让我举个例子:

在我的app.js中,我有以下内容:

var iniparser = require('iniparser');
var config = iniparser.parseSync('./config.ini');

如果在config.port文件中使用app.js,该工作正常。但是,当尝试从config文件中访问routes.js时,它无法使用。

所以我的问题是,范围是否仅限于模块/文件中包含的其他模块?如果我想解析config.ini,我必须将模块包含在任何模块/文件中,我打算使用'iniparser'模块。

我希望我没有混淆任何人。

1 个答案:

答案 0 :(得分:1)

声明的变量的范围
var xxx = yyy; 

仅限于声明它的模块/文件(或声明它的函数,如果它在函数内声明的话。)

在您的情况下,您必须在您需要的每个文件/模块中添加两行。

作为优化,并且为了避免多次解析配置文件,您可以拥有config.js文件

var iniparser = require('iniparser');
module.exports = iniparser.parseSync('./config.ini'); // executed only once

然后在需要的所有文件/模块中要求配置

var config = require('./config');
console.log(config.port);