我正在使用套接字。io和Express 4和我有问题传递io
到其他模块。
在我的app.js中,我像这样将io附加到应用程序:
var express = require('express');
var socket_io = require('socket.io');
var app = express();
app.io = socket_io();
module.exports = app;
我的服务器定义在。/bin/www不在app.js中,io
像这样连接到服务器:
/bin/www:
var app = require('../app');
var http = require('http');
server.listen(3000);
app.io.attach(server);
在我的模块中,我试图导入app
访问app.io
,但我可能有一个循环依赖问题,因为app
是一个空对象。
module.js
var app = require('../app');
console.log(app)
--> {}
我已经尝试了这个和这个问题中建议的解决方案,但它们不起作用。我怀疑我在。/bin/www中创建服务器可能是原因。
我能做些什么来访问app
在其他模块?
你可以试试这个答案:使用套接字。Express 4和Express -generator's/bin/www
app.js
// Socket.io
var io = socket_io();
app.io = io;
var routes = require('./routes/index')(io);
index.js
module.exports = function(io) {
var app = require('express');
var router = app.Router();
io.on('connection', function(socket) {
(...)
});
return router;
}
也尽量不要从模块
app.js