TypeError: require(...).listen 不是函数
Posted
技术标签:
【中文标题】TypeError: require(...).listen 不是函数【英文标题】:TypeError: require(...).listen is not a function 【发布时间】: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
。
【参考方案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)
【讨论】:
以上是关于TypeError: require(...).listen 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
获取 TypeError:wsc.require 不是 hyco-ws npm 包的功能
NodeJs : TypeError: require(...) is not a function
TypeError: undefined is not an object(评估 '_$$_REQUIRE(_dependencyMap[9], "../../config/FIREBASE