首页 > 解决方案 > Typescript 3.0 项目参考的 Jest 编译问题

问题描述

我正在开发一个使用 Typescript 3.0 项目参考的大型项目。我们正在使用与本文接受的评论类似的项目结构如何在 TypeScript 3.0 中使用项目引用?. 对于测试框架,我们选择了 Jest,并使用 Jest 的项目功能来分离单元、集成和 linting 测试。

"projects": [
  {
    "displayName": "integration",
    "preset": "ts-jest",
    "testEnvironment": "node",
    "testMatch": [
      "<rootDir>/test/integration/**/*.spec.ts"
    ],
    "setupFilesAfterEnv": [
      "<rootDir>/test/jest-setup.ts"
    ]
  },
  {
    "displayName": "unit",
    "preset": "ts-jest",
    "testEnvironment": "node",
    "testMatch": [
      "<rootDir>/test/unit/**/*.spec.ts"
    ],
    "setupFilesAfterEnv": [
      "<rootDir>/test/jest-setup.ts"
    ]
  },
  {
    "displayName": "lint",
    "runner": "jest-runner-eslint",
    "testEnvironment": "node",
    "testMatch": [
      "<rootDir>/src/**/*.ts"
    ]
  }
]

因此,使用项目引用;我可以使用tsc --build. 但是,当使用 Jest 时,我遇到了编译问题,因为 Jest 无法从 src 项目中找到定义文件。正如我所说,这可以使用 typescript 编译器进行编译,并且在 VSCode 中没有 linting 问题。

我试图解决这个问题的一种方法是将定义文件从 src 导入到 jest 设置文件中,即:import '../src/index.d'. 这仅在清除 Jest 的缓存后第一次运行时解决了该问题。第二次及以后的运行都将因编译问题而失败。

有没有人成功地将 Jest 与 Typescript 的项目引用一起使用?Jest 甚至支持项目引用吗?为什么清除缓存仅在第一次运行时解决此问题,而不是任何其他后续运行?

标签: typescriptcompiler-errorsjestjsts-jest

解决方案


推荐阅读