You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BeagleBone Black编程控制LED时NodeJS出现socket.io报错如何解决?

问题原因

  • 核心报错是socket.io版本不兼容导致的API不匹配:你参考的旧教程使用的是socket.io 2.x版本,而当前npm默认安装的是3.x/4.x版本,该版本移除了.listen()的调用方式,因此会抛出require(...).listen is not a function错误。
  • 代码中存在重复启动服务的逻辑:创建http服务时已经调用.listen(8888)启动了8888端口的服务,代码最后一行再次调用server.listen()会导致端口占用、服务无响应。

修复方案

方式1:适配新版socket.io(推荐)

修改server.js代码如下:

  1. 替换socket.io初始化代码:
    将原来的
var io = require('socket.io').listen(server);

替换为

var io = require('socket.io')(server);
  1. 删除最后一行重复启动服务的代码:
    删掉server.listen(console.log("Server Running ..."));,直接保留console.log("Server Running ...");即可。
  2. 可选优化前端代码:如果修改后前端连接失败,可以将index.html中的var socket = io.connect();改为var socket = io();,适配新版socket.io客户端语法。

方式2:降级到兼容版本的socket.io

如果不想修改原有代码,可以直接安装教程对应的2.x版本socket.io:
执行命令npm install socket.io@2.4.1即可直接兼容原有代码,注意同样需要删除重复的server.listen()调用。


内容的提问来源于stack exchange,提问作者Nicholai Mørch Rindarøy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:15:04