繁体   English   中英

调用变量到在Node.js和Express中不起作用的其他路由

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM