2010-10-12 4 views
9

У меня есть 3 узла файлы:Поделиться переменными между модулями в Javascript/node.js?

// 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, потому что приложение не определено.

Есть ли способ сделать это возможным?

ответ

0

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

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

app.configure(...); 
8

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

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

$ 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' } 
Смежные вопросы