当我在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'模块。
我希望我没有混淆任何人。
答案 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);