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

调用peer模块peerServer报peerServer is not a function错误

报错原因

两个核心问题导致抛出peerServer is not a function的TypeError:

  1. 导出成员名书写错误
    v0.x版本的peer包中,适配Express的服务端构造方法导出名称是ExpressPeerServer,不存在代码中写的peerServer这个命名导出,解构拿到的值实际是undefined,把undefined当函数调用必然触发类型错误。
  2. 包版本与结构不匹配
    如果本地安装的是v1.0.0及以上版本的peer包,官方已经把服务端信令能力完全拆分到独立包@peerjs/peer-server中,主包peer仅保留前端客户端能力,主入口不会导出任何服务端相关方法,从主包里解构服务端方法只能拿到undefined。
    额外注意:错误日志里出现的require("peer")(app)写法也是错误的,peer包主入口导出的是普通对象,不是可以直接传参调用的工厂函数,直接加括号调用同样会触发类型错误。
修复方案

根据使用的包版本选择对应方案即可:

  • 方案1:兼容旧版写法
    先固定安装v0.x最后一个稳定版的peer包:
    npm install peer@0.6.1 --save
    
    修正代码中的导入和初始化逻辑:
    const express = require('express');
    const http = require('http');
    // 注意解构的正确名称为ExpressPeerServer
    const { ExpressPeerServer } = require('peer');
    
    const app = express();
    const server = http.createServer(app);
    
    // 初始化peer服务
    const peerServer = ExpressPeerServer(server, {
      debug: true
    });
    
    // 将peer服务挂载到指定路由路径
    app.use('/peerjs', peerServer);
    
    server.listen(3000, () => {
      console.log('服务启动成功,监听端口3000');
    });
    
  • 方案2:使用最新版官方推荐写法
    安装拆分后的独立服务端包(如果需要对接前端客户端,主包peer可保留安装):
    npm install peer @peerjs/peer-server --save
    
    修正导入和初始化代码:
    const express = require('express');
    const http = require('http');
    // 从独立服务端包导入PeerServer构造方法
    const { PeerServer } = require('@peerjs/peer-server');
    
    const app = express();
    const server = http.createServer(app);
    
    // 初始化peer服务
    const peerServer = PeerServer({
      debug: true,
      path: '/peerjs'
    }, server);
    
    server.listen(3000);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:21:34