在Javascript/node.js中如何在模块之间共享变量?

9

我有3个节点文件:

// run.js

require('./configurations/modules');
require('./configurations/application');

// modules.js

var express = module.exports.express = require('express');
var app = module.exports.app = express.createServer();

// app.js

app.configure(...)

Run.js需要两个文件:modules.js,它需要一个模块并创建一个变量;app.js应该使用该变量。但是在app.js上我遇到了一个错误,因为app未定义。

有没有办法解决这个问题?

2个回答

9

除非被导出,否则在模块中声明的所有内容都是本地的。

从一个模块导出的对象可以被引用它的其他模块访问。

$ cat run.js 
require('./configurations/modules');
require('./configurations/application');

$ cat configurations/modules.js 
exports.somevariable = {
  someproperty: 'first property'
};

$ cat configurations/application.js 
var modules = require('./modules');

modules.somevariable.something = 'second property';
console.log(modules.somevariable);

$ node run.js 
{ someproperty: 'first property',
  something: 'second property' }

0

看起来你是在modules.js中定义变量,但是尝试在app.js中引用它。你需要在app.js中再次使用require:

// app.js
var application = require('./path/to/modules'),
    app = application.app;

app.configure(...);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接