[英]Calling a variable to a different route not working in nodejs and express
我的app.js设置如下:
app.js
var express = require('express'); var socket_io = require("socket.io"); var app = express(); //Our route variables. var routes = require('./routes/index'); var users = require('./routes/users'); var work = require('./routes/work'); // Socket.io var io = socket_io(); app.io = io; var playground = require('./routes/playground')(io); //CODE I WANT MOVED TO playground.js! //Socket IO playground io.on('connection', function(socket) { console.log('a user connected'); socket.on('chat message', function(msg) { io.emit('chat message', { message: msg.message, nickname: msg.nickname }); }); socket.on('disconnect', function() { console.log('a user disconnected'); }); });
有人告诉我,我可以.IO发送给我的路线playground.js是这样的:
var playground = require('./routes/playground')(io);
但是我收到以下错误,无法调用未定义'IndexOf'的方法
我不希望我的socket.io代码位于app.js中,因为我不希望app.js变得混乱。 (代码将随着时间的推移而增长)我只想在Playground.js中使用socket.io,因为我所有的测试应用程序都在那里。 请让我知道是否可以更清楚地说明这一点
playground.js
var express = require('express'); var router = express.Router(); module.exports = function(io) { io.on('connection', function(socket) { console.log("connection made!"); }); }; router.get('/', function(req, res, next) { res.render('playground'); }); module.exports = router;
在你playground.js
最后一行module.exports = router;
取代之前的module.exports
声明。 尝试:
//routes/playground.js
var express = require('express');
var router = express.Router();
module.exports = function(app, io) {
io.on('connection', function(socket) {
console.log("connection made!");
});
};
router.get('/', function(req, res, next) {
res.render('playground');
app.use('/', router);
});
并尝试require('./routes/playground')(app, io);
在您的应用程序中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.