2013-02-25 58 views
3

我需要訪問使用表達式2和節點0.8在app.js中聲明的變量;我有以下代碼:如何從node.js中的其他模塊訪問應用程序變量?

app.js 
------ 
[.....] 
var server = app.listen(3000); 
var io = require('socket.io'); 
io.listen(server); 
exports.io=io; 

module.js 
---------- 
var app=require("./app"); 
console.log(app.io); 

但app.io是undefined ...我在做什麼錯了?

+0

如果需要module.js? – 2013-02-25 16:49:45

回答

4

如果添加console.log旁邊,當你在app.js設置exports.io到,這很可能是後console.log(app.io)運行發生在module.js

相反,爲了更好地控制訂單,您可以在module.js中導出init函數,並從app.js中調用它。

module.js

var io = null; 
exports.init = function(_io) { 
    io = _io; 
} 

app.js

var server = app.listen(3000); 
var module = require('./module') 
var io = require('socket.io'); 
io.listen(server); 
module.init(io); 
3

當你做requiremodule.js確保將變量app傳遞給構造函數。例。

app.js

var app = express(); 
var mod = require('module')(app); 

module.js

// Module constructor 
var app; 
var m = module.exports = function (_app) { 
    app = _app; 
} 

m.myFunction = function() { 
    // app is usable here 
    console.log(app); 
} 
相關問題