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