簡體   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