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

使用websockets开发时出现prototype未定义的TypeError报错如何解决

报错根因

你碰到的Uncaught TypeError: Cannot read property 'prototype' of undefined错误,核心原因是你使用的nowjs库已经停止维护近10年,仅兼容Node.js 0.8/0.10等极低版本,和你当前使用的高版本Node.js完全不兼容,库内部依赖的旧版Node核心API、Socket.io接口在新版本中已经被删除或修改,导致初始化时调用不存在的属性报错。

解决方案

方案1:降级Node.js版本(仅用于兼容旧代码,不推荐长期使用)

如果你必须运行当前这份nowjs的代码,操作步骤如下:

  • 卸载当前高版本Node.js,安装Node.js 0.10.48历史版本
  • 重新安装对应版本的nowjs依赖:npm install now@0.8.1
  • 重新启动服务即可正常运行

方案2:替换为当前主流WebSocket方案(推荐)

现在Node.js实现聊天功能普遍使用维护活跃、兼容性好的socket.io库,改写后的服务端代码如下:

// 先安装对应依赖:npm install socket.io
const fs = require('fs')
const html = fs.readFileSync(__dirname + '/simpleChat.html');
const server = require('http').createServer(function (req, res) {
  res.end(html);
});
server.listen(8080);

const { Server } = require("socket.io");
const io = new Server(server);

io.on('connection', (socket) => {
  // 接收客户端发送的消息
  socket.on('distributeMessage', (name, message) => {
    // 广播给所有连接的客户端
    io.emit('receiveMessage', name, message)
  })
});

你只需要同步把前端simpleChat.html里的调用逻辑替换为socket.io客户端API即可。

内容的提问来源于stack exchange,提问作者COULIBALY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:06:04