Делить переменные между модулями в Javascript / node.js? - PullRequest
9 голосов
/ 13 октября 2010

У меня есть 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 ]

8 голосов
/ 06 сентября 2011

Все, что объявлено в модуле, является локальным для этого модуля, если оно не экспортировано.

Доступ к экспортированным объектам из одного модуля можно получить из других модулей, которые ссылаются на него.

$ 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 голосов
/ 13 октября 2010

Похоже, вы определяете переменную в modules.js, но пытаетесь сослаться на нее в app.js.Вам понадобится другое требование в app.js:

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

app.configure(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...