【问题标题】:TypeError: require(...).listen is not a functionTypeError: require(...).listen 不是函数
【发布时间】:2021-03-03 12:47:40
【问题描述】:

我写了这个,但出现错误,我不知道如何修复

var http = require('http');
var clientHtml = require('fs').readFileSync('client.html');

var plainHttpServer = http.createServer(function (request, response) {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.end(clientHtml);
}).listen(8080);

var files = require('fs');

var io = require('socket.io').listen(plainHttpServer);
io.set('origins', ['localhost:8080', '127.0.0.1:8080']);

这个错误来了,我不知道如何解决,告诉我

var io = require('socket.io').listen(plainHttpServer);
                          ^

TypeError: require(...).listen is not a function

【问题讨论】:

  • 是的,@Abra 是正确的,这看起来像 javascript。但是,错误是说 require() 没有返回可以使用函数 listen() 的东西
  • 你安装了Node包socket.io了吗?在您的命令行中,在包含该节点脚本的目录中,执行npm install socket.io

标签: javascript node.js server socket.io


【解决方案1】:

require('socket.io') 返回 socket.io 服务器类。它是一个类,而不是一个实例,因此不是你称之为.listen() 的东西。正如您所见here in the doc 所示,根据您要完成的具体任务,您可以通过多种不同的方式使用该Server 类。例如,您可以这样做:

const Server = require('socket.io');
const io = new Server(somePort);

或者这个:

const io = require('socket.io')(somePort);

或共享现有的 http 服务器:

const io = require('socket.io')(plainHttpServer);

【讨论】:

  • 只是补充一下 - 最新版本之前的版本确实支持 listen() 函数
【解决方案2】:

下面的 sn-p 对我有用:

const io = require('socket.io')(server);
...
server.listen(3000)

【讨论】:

    猜你喜欢
    • 2016-07-06
    • 1970-01-01
    • 2016-02-10
    • 2018-03-11
    • 2021-07-21
    • 1970-01-01
    • 2019-04-10
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多