【问题标题】:Uncaught TypeError: app.getSocketIo is not a function in socket.io未捕获的类型错误:app.getSocketIo 不是 socket.io 中的函数
【发布时间】:2021-01-24 03:21:07
【问题描述】:

我收到错误,就像我在问题中显示的那样,我使用this 答案作为解决方案,但我得到了错误

这是 app.js 的代码

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

io.on('connection', async (socket) => {
    console.log('socket connected', userId)

    if (io.nsps['/'].adapter.rooms["room-" + userId] && io.nsps['/'].adapter.rooms["room-" + userId].length > 0) userId++;
    socket.join("room-" + userId);
    io.sockets.in("room-" + userId).emit('connectToRoom', "You are in room no. " + userId);
    io.sockets.in("room-" + userId).emit('Image upload', "image upload is started");
    io.sockets.in("room-" + userId).emit('progress', "Image is Uploading started Please Wait A minute");
    io.sockets.in("room-" + userId).emit('error', "clients connected!");

});

function getSocketIo() {
    return io;
}
module.exports.getSocketIo = getSocketIo();

这是我正在导入 getSocketIo 但出现错误的控制器文件的代码

const getSocketIo = require('../app.js');
const io = app.getSocketIo()
              ^
              |------------ error - Uncaught TypeError: app.getSocketIo is not a function in socket.io 

【问题讨论】:

    标签: node.js function socket.io


    【解决方案1】:

    你是在导出时执行的函数,改成这样:

    module.exports.getSocketIo = getSocketIo;
    

    另外,我建议使用更简洁的解决方案并将应用文件保留为唯一目的,请参阅this,希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      添加下面的代码,我已经从 app.js 导出了 io 对象,你可以轻松地在你想要的地方使用它

      const server = require('http').createServer(app);
      const io = require('socket.io')(server);
      
      io.on('connection', async (socket) => {
          console.log('socket connected', userId)
      
          if (io.nsps['/'].adapter.rooms["room-" + userId] && io.nsps['/'].adapter.rooms["room-" + userId].length > 0) userId++;
          socket.join("room-" + userId);
          io.sockets.in("room-" + userId).emit('connectToRoom', "You are in room no. " + userId);
          io.sockets.in("room-" + userId).emit('Image upload', "image upload is started");
          io.sockets.in("room-" + userId).emit('progress', "Image is Uploading started Please Wait A minute");
          io.sockets.in("room-" + userId).emit('error', "clients connected!");
      
      });
      
      const socketIoObject = io;
      module.exports.ioObject = socketIoObject;
      

      你想在哪里获得该功能使用下面的代码

      const socket = require('../app');//import object
      
      socket.ioObject
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-06
        • 2019-05-24
        • 2021-12-15
        • 2019-10-26
        • 2016-06-27
        • 2021-12-19
        相关资源
        最近更新 更多