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

NestJS运行e2e测试报错:无法找到模块的解决方案咨询

问题:NestJS执行e2e测试时模块找不到

运行test:e2e测试时碰到以下错误:

Cannot find module 'src/tokens/entities/tokens.entity' from '../src/token-stat/entities/token-stat.entity.ts'

  1 | import { ApiProperty } from '@nestjs/swagger';
> 2 | import { Token } from 'src/tokens/entities/tokens.entity';
    | ^
  3 | import {
  4 |   Entity,
  5 |   PrimaryGeneratedColumn,

当前package.json里的相关Jest配置:

{
  "moduleFileExtensions": [
    "js",
    "json",
    "ts"
  ],
  "moduleNameMapper": {
    "^src/(.*)$": "<rootDir>/$1"
  },
  "rootDir": "./src",
  "testRegex": ".*\\.spec\\.ts$",
  "transform": {
    "^.+\\.(t|j)s$": "ts-jest"
  },
  "collectCoverageFrom": [
    "**/*.(t|j)s"
  ],
  "coverageDirectory": "../coverage",
  "testEnvironment": "node"
}

请问该怎么修改package.json配置来解决这个问题?


解决方法

核心问题是e2e测试的Jest配置没正确映射src/路径。因为e2e测试文件一般在test/目录下,而你当前rootDir设为./src,导致Jest从e2e测试文件出发时,找不到src/开头的模块。

可以通过以下两种方式修改package.json配置:

方式1:分项目配置单元测试和e2e测试

在package.json的jest配置中添加projects字段,分别为两种测试设置适配的规则:

"jest": {
  "projects": [
    // 单元测试配置
    {
      "moduleFileExtensions": ["js", "json", "ts"],
      "rootDir": "./src",
      "testRegex": ".*\\.spec\\.ts$",
      "transform": {
        "^.+\\.(t|j)s$": "ts-jest"
      },
      "moduleNameMapper": {
        "^src/(.*)$": "<rootDir>/$1"
      },
      "collectCoverageFrom": ["**/*.(t|j)s"],
      "coverageDirectory": "../coverage",
      "testEnvironment": "node"
    },
    // e2e测试配置
    {
      "moduleFileExtensions": ["js", "json", "ts"],
      "rootDir": "./",
      "testRegex": ".e2e-spec.ts$",
      "transform": {
        "^.+\\.(t|j)s$": "ts-jest"
      },
      "moduleNameMapper": {
        "^src/(.*)$": "<rootDir>/src/$1"
      },
      "testEnvironment": "node"
    }
  ]
}

这种方式把e2e测试的rootDir设为项目根目录,同时将src/映射到根目录下的src文件夹,确保导入路径能被正确解析。

方式2:调整现有moduleNameMapper路径(简易版)

如果不想拆分配置,可以直接修改原有的moduleNameMapper,让它同时适配两种测试的路径:

"moduleNameMapper": {
  "^src/(.*)$": "<rootDir>/../src/$1"
}

不过这种方式可能会对单元测试的路径解析产生影响,优先推荐方式1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:58:34