2010-10-12 26 views
9

tengo 3 archivos de nodos:¿Compartir variables entre módulos en 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 requiere tanto de archivos, modules.js que requieren un módulo y crea una variable, y app.js que debe utilizar esa variable. Pero aparece un error en la aplicación app.js porque no está definido.

¿Hay alguna manera de que esto sea posible?

Respuesta

0

Parece que está definiendo la variable en modules.js, pero tratando de hacer referencia a ella en app.js. Tendrá que tener otro requieren en app.js:

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

app.configure(...); 
8

Todo lo declarado en un módulo es local a ese módulo a menos que se exporta.

Se puede acceder a los objetos exportados de un módulo desde otros módulos que hacen referencia a él.

$ 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' } 
Cuestiones relacionadas