【问题标题】:socketio io.on is not a functionsocketio io.on 不是函数
【发布时间】:2020-03-14 03:32:45
【问题描述】:

我在网上看到了很多解决方案,但对我帮助不大。

我在express.js 框架中创建了一个有效的nodejs 身份验证系统。我只想添加一个chat 函数来帮助我们获取有关它的信息。

路线是

const dashboard = require('./routes/dashboard').dash;

调用函数是

app.use('/dashboard', dashboard)

在此代码页 ./rotes/dashboard.js 我正在像这样导出它们

const express = require('express');
const router = express.Router();
var app = express();
const io = require('socket.io');
const fs = require('fs');

const { ensureAuthenticated } = require('../db/auth.js');


//exporting dashboard 
module.exports = {
  dash: router.get('/', (req,res)=>{
    var chat = io.on('connection', (socket)=>{
      console.log('chat is connected');
    })
    res.render('dashboard', {chat:chat});

  })
}

但我收到此错误:

io.on is not a function
TypeError: io.on is not a function
    at E:\expressBasedLOginSignUP\routes\dashboard.js:13:19
    at Layer.handle [as handle_request] (E:\expressBasedLOginSignUP\node_modules\express\lib\router\layer.js:95:5)
    at next (E:\expressBasedLOginSignUP\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (E:\expressBasedLOginSignUP\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (E:\expressBasedLOginSignUP\node_modules\express\lib\router\layer.js:95:5)
    at E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:335:12)
    at next (E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:174:3)
    at router (E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:47:12)
    at Layer.handle [as handle_request] (E:\expressBasedLOginSignUP\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:317:13)
    at E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:335:12)
    at next (E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:275:10)
    at E:\expressBasedLOginSignUP\node_modules\express\lib\router\index.js:635:15

有人帮助我如何避免此功能以及为什么会发生这种情况。

【问题讨论】:

标签: node.js express socket.io chat


【解决方案1】:

socket.io 返回一个函数,您必须调用该函数并将您的 http 服务器引用传递给它。

例子:

const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);

然后你就可以在上面调用事件了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 2016-12-25
    相关资源
    最近更新 更多