3

Express2とノード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

でセットしconsole.logたときの横に右を追加すると、 で実行した後に発生する可能性があります。exports.ioapp.jsconsole.log(app.io)module.js

代わりに、順序をより適切に制御するために、 init 関数を にエクスポートしmodule.js、 から呼び出すことができます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);
于 2013-02-25T18:46:47.293 に答える
3

requireofを実行するときはmodule.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);
}
于 2013-02-25T18:46:29.077 に答える