Node.js 未捕获类型错误:app.getSocketIo不是socket.io中的函数

Node.js 未捕获类型错误:app.getSocketIo不是socket.io中的函数,node.js,function,socket.io,Node.js,Function,Socket.io,我得到了错误,正如我在问题中所展示的,我使用答案作为解决方案,但我得到了错误 这是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['/'

我得到了错误,正如我在问题中所展示的,我使用答案作为解决方案,但我得到了错误

这是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 

导出时正在执行函数,请更改为:

module.exports.getSocketIo = getSocketIo;

此外,我建议使用更干净的解决方案,并将应用程序文件保留为其唯一用途,请参阅,希望它有帮助。

如果导出时正在执行该功能,请更改为:

module.exports.getSocketIo = getSocketIo;

此外,我建议使用更干净的解决方案,并将应用程序文件保留为其唯一用途,请参阅,希望它能有所帮助。

添加以下代码,我已从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

添加下面的代码我已经从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