【问题标题】:Jest testing module not found未找到 Jest 测试模块
【发布时间】:2020-04-08 19:02:35
【问题描述】:

我正在使用 jest 测试我的 js 应用程序。在我的 package.json 中,我映射了所有模块,例如 在documentation中描述:

 "jest": {
    "moduleNameMapper": {
      "@db/(.*)": "<rootDir>/db/$1",
      "@src/(.*)": "<rootDir>/src/$1",
      "@dto/(.*)": "<rootDir>/src/dto/$1",
      "@repos/(.*)": "<rootDir>/src/repos/$1",
      "@fetchers/(.*)": "<rootDir>/src/fetchers/$1",
      "@controllers/(.*)": "<rootDir>/src/controllers/$1",
      "@parsers/(.*)": "<rootDir>/src/parsers/$1",
      "@streams/(.*)": "<rootDir>/src/streams/$1",
      "@validators/(.*)": "<rootDir>/src/validators/$1"
    }
  },

但是,当我实例化一个包含顶部导入的新 RestRepo 时,我在执行测试时收到此错误:

Cannot find module '@db' from 'RestRepo.js'

Require stack:
  src/repos/RestRepo.js
  tests/unit/RestEndpoint.test.js

> 1 | const { RestEndpoint } = require('@db');
    |                          ^
  2 | 
  3 | class RestRepo {

我该如何解决这个问题?为什么会这样?

【问题讨论】:

    标签: javascript testing jestjs


    【解决方案1】:

    你可以试试替换

    "@db/(.*)": "<rootDir>/db/$1",
    

    "@db(.*)": "<rootDir>/db$1",
    

    这样捕获组将匹配可选的斜杠/(如果存在)和

    require("@db")
    

    将被解释为

    require("<rootDir>/db");
    

    或者只需添加另一个条目

    "@db": "<rootDir>/db",
    

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 2020-05-18
      • 2019-10-30
      • 2022-08-23
      • 2022-06-12
      • 2018-09-14
      • 1970-01-01
      • 2018-08-21
      • 2016-09-15
      相关资源
      最近更新 更多