1

これが私のapp.jsの外観です

var app = require('http').createServer(handler),
    io = require('socket.io').listen(app),
    static = require('node-static'); // for serving files
var game = require('./game.js').createGame();

// This will make all the files in the current folder
// accessible from the web
var fileServer = new static.Server('./');

// This is the port for our web server.
// you will need to go to http://localhost:8080 to see it
app.listen(8080);

// Listen for incoming connections from clients
io.sockets.on('connection', function (socket) {
    handle Events ... 
});

exports.io = io;
exports.game = game;

作成されたsocket.iolistnerまたはゲームインスタンスにアクセスしようとすると、未定義というエラーが表示されます。これは私がtrick、jsでそれにアクセスしようとしている方法です

var game = require('./app.js').game;
var socketio = require('./app.js').io;
var PlayerMove = require('./playerMove.js');

これは、trick.jsが実際にapp.jsの前に実行されているためである可能性があります(デバッグポイントを配置し、そこで確認されました)。これを回避するにはどうすればよいですか?node.jsでオブジェクトインスタンスを公開するためのより良い方法はありますか?おそらく使用する必要があるパターンはありますか?

4

1 に答える 1

0

変数を宣言してもエクスポートされません。モジュールのために何かをエクスポートする必要がある場合は、exports.myVariable = myValue を使用する必要があります。

初めて app.js ファイルを要求すると、それが実行されます。したがって、require() 呼び出しを終了すると、エクスポートしたものはすべて利用可能になります。

于 2013-03-11T15:42:30.593 に答える