2013-02-25 57 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); 
} 
相关问题