2010-10-12 97 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' }