2010-10-12 13 views
9

mam 3 pliki węzła:Udostępnianie zmiennych między modułami w 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 wymaga zarówno pliki, które wymagają modules.js moduł i tworzy zmienną i app.js które powinny używać tej zmiennej. Ale pojawia się błąd w app.js, ponieważ aplikacja nie jest zdefiniowana.

Czy istnieje sposób, aby było to możliwe?

Odpowiedz

0

Wygląda na to, że definiujesz zmienną w module.js, ale próbujesz odwoływać się do niej w app.js. Musisz mieć inne wymagania w app.js:

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

app.configure(...); 
8

Wszystko zadeklarowane w module jest lokalne dla tego modułu, chyba że zostanie wyeksportowane.

Do eksportowanych obiektów z jednego modułu można uzyskać dostęp z innych modułów, które go odwołują.

$ 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' } 
Powiązane problemy