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

使用Fastify的NestJS端到端测试出现@nestjs/platform-express缺失错误

问题成因

NestJS 测试模块的 createNestApplication() 方法默认使用 @nestjs/platform-express 作为 HTTP 适配器,该默认配置不会自动继承你主应用中使用的 Fastify 配置。所以即使你的业务代码全部基于 Fastify 开发,只要测试代码没有显式指定适配器,Nest 就会尝试加载 express 相关依赖,最终抛出缺失包的报错。

解决方法

推荐方案:测试代码显式指定 Fastify 适配器

  • 首先确保你已经安装了 Fastify 相关依赖,缺失可执行 npm i @nestjs/platform-fastify fastify 安装
  • 修改你的 app.e2e-spec.ts 测试文件:
    1. 导入 Fastify 适配器
    import { FastifyAdapter } from '@nestjs/platform-fastify';
    
    1. 替换创建应用的代码,手动传入适配器
    // 原有代码
    // app = moduleFixture.createNestApplication();
    // 替换为以下代码
    app = moduleFixture.createNestApplication(new FastifyAdapter());
    

修改完成后重新执行 npm run test:e2e 即可正常运行。该方案可以保证测试环境和你生产环境使用的 HTTP 服务完全一致,避免出现环境差异导致的隐性问题。

可选方案(不推荐):安装 platform-express 依赖

如果不想修改测试代码,也可以直接执行 npm i @nestjs/platform-express 安装缺失的依赖,测试也可以正常运行。但该方案会引入冗余依赖,且测试环境和生产环境使用的HTTP服务不一致,可能会出现预期外的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:00