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

在NestJS应用中集成PeerServer遇/myapp路径404问题求助

NestJS集成PeerServer的问题解决

问题分析

核心问题是路径映射逻辑不匹配:

  • PeerServer配置了path: '/myapp',意味着它只会处理以/myapp为前缀的内置路由(比如PeerJS的握手、信令接口)
  • 控制器中把/peer-server/myapp替换为/myapp后,PeerServer会将其识别为根路径,无法匹配自身基于/myapp的内置路由,因此返回404
  • 自定义的/test接口能正常响应,是因为你直接在PeerServer实例上注册了该路由,不受path选项的约束

解决方案

推荐两种实现方式,选其一即可:

方式一:通过Nest中间件直接挂载(更简洁)

去掉控制器,直接将PeerServer作为中间件挂载到指定路径:

  1. 修改peer-server.service.ts:
import { Injectable } from '@nestjs/common';
import { NestExpressApplication } from '@nestjs/platform-express';
import { ExpressPeerServer, PeerServerEvents } from 'peer';
import { Express } from 'express';

@Injectable()
export class PeerServerService {
  peerServer: Express & PeerServerEvents;

  enablePeerServer(app: NestExpressApplication) {
    this.peerServer = ExpressPeerServer(app.getHttpServer(), {
      path: '/myapp', // PeerServer自身的路径前缀
    });
    // 将PeerServer挂载到Nest的/peer-server路径下
    app.use('/peer-server', this.peerServer);
    
    // 自定义测试接口(可选)
    this.peerServer.get('/test', (req, res) => {
      res.send('hello');
    });
  }
}
  1. 删除peer-server.controller.ts(不再需要)

此时请求/peer-server/myapp会直接被PeerServer处理,自定义接口/peer-server/test也能正常响应。

方式二:调整控制器的路径替换逻辑

如果需要保留控制器转发,修改路径处理逻辑并调整PeerServer的path配置:

  1. 修改peer-server.service.ts,移除path选项(或设为空字符串):
enablePeerServer(app: NestExpressApplication) {
  this.peerServer = ExpressPeerServer(app.getHttpServer(), {
    // 去掉path配置,或设为path: ''
  });
  
  this.peerServer.get('/test', (req, res) => {
    res.send('hello');
  });
}
  1. 修改peer-server.controller.ts的URL替换逻辑:
@All('*')
server(
  @Req() request: Request,
  @Res() response: Response,
  @Next() next: NextFunction,
) {
  // 直接去掉/peer-server前缀,保留完整的后续路径
  request.url = request.url.replace('/peer-server', '');
  this.peerServerService.peerServer(request, response, next);
}

此时请求/peer-server/myapp会被替换为/myapp,PeerServer没有自身的path前缀,就能正确匹配内置路由。

验证

启动应用后:

  • 访问/peer-server/myapp应返回PeerServer的正常响应(而非404)
  • 访问/peer-server/test仍能返回hello

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:10:25