Делить переменные между модулями в Javascript/node.js?
У меня есть 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, потому что приложение не определено.
Есть ли способ сделать это возможным?
2 ответа
Все, что объявлено в модуле, является локальным для этого модуля, если оно не экспортировано.
Экспортированные объекты из одного модуля могут быть доступны из других модулей, которые ссылаются на него.
$ 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' }
Похоже, вы определяете переменную в modules.js, но пытаетесь сослаться на нее в app.js. Вам понадобится еще одно требование в app.js:
// app.js
var application = require('./path/to/modules'),
app = application.app;
app.configure(...);