3

我需要使用 express 2 和 node 0.8 访问 app.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 是未定义的……我做错了什么?

4

2 回答 2

4

如果你在set inconsole.log的时候加上一个right ,这很可能是在runs in之后发生的。exports.ioapp.jsconsole.log(app.io)module.js

相反,为了更好地控制顺序,您可以在 中导出一个 init 函数module.js,然后从 中调用它app.js

模块.js

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

应用程序.js

var server = app.listen(3000);
var module = require('./module')
var io = require('socket.io');
io.listen(server);
module.init(io);
于 2013-02-25T18:46:47.293 回答
3

当您执行时,请require确保module.js将变量传递app给构造函数。例子。

应用程序.js

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

模块.js

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

m.myFunction = function () {
    // app is usable here
    console.log(app);
}
于 2013-02-25T18:46:29.077 回答