【问题标题】:How to fix ‘io is not defined'如何修复'io未定义'
【发布时间】:2019-08-27 01:33:46
【问题描述】:

我正在尝试将 socket.io 集成到我的项目中。 下面的代码工作正常。

io.on('connection', (socket) => {
  console.log('a user connected');
  socket.on('someEvent', (data) => {
    io.emit('someEvent2', data); 
  });
});

在我将套接字处理程序放入单独的文件之前,一切正常。

server.js

const socketHandlers = require('./socket/handlers');
io.on('connection', socketHandlers);

handlers.js

const socketHandlers = (socket) => {
  console.log('a user connected');
  socket.on('someEvent', (data) => {
    io.emit('someEvent2', data);    ---here's a problem
  });
};

module.exports = socketHandlers;

现在我收到一个错误 - io 未定义。这里有什么问题?

【问题讨论】:

  • 你需要像这样var io = require('socket.io')(app);
  • 我是在 server.js 文件中完成的。将套接字处理程序放在单独的文件中后出现此错误。这一行的问题 - io.on ('connection', socketHandlers)。但我不明白出了什么问题
  • ha.. 您需要在 server 文件中声明的 io 的相同实例,因为当您发出时,它需要连接。在一个文件中声明的io 在另一个文件中不可访问。
  • 所以...我需要在handlers.js 中声明所有依赖项?我的意思是app,express,http等。有没有可能让它更容易?
  • 您可以从共享文件中导出io 实例,然后将该实例导入到任何需要它的地方。这就是你在 node.js 中的模块之间共享数据的方式。

标签: javascript node.js module socket.io


【解决方案1】:

安装socket.io

npm i socket.io

然后使用下面的行

var io = require('socket.io');

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 2016-01-29
    • 2019-09-20
    • 2022-01-20
    相关资源
    最近更新 更多