【问题标题】:Typescript paths not resolving when running jest?运行玩笑时打字稿路径无法解析?
【发布时间】:2019-03-22 11:40:35
【问题描述】:

尝试使用these instructions 来开玩笑convert this project。除了使用paths 配置的文件之外,我一切正常:

"paths": {
      "@fs/*": ["./src/*"], 
      "@test/*": ["./test/*"]
    }

看起来好像在运行测试时导入语句没有解析并记录下来:

Cannot find module '@fs/container/validation/ValidationContext' from 'Core.spec.ts'

  1 | import { ValidationOptions } from "@fs/container/validation/ValidationOptions";
> 2 | import { ValidationContext } from "@fs/container/validation/ValidationContext";
    | ^
  3 | import { ValidationContainer } from "@fs/container/validation/ValidationContainer";
  4 | 
  5 | import { Core1 } from "@test/core/Core1";

  at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:221:17)
  at Object.<anonymous> (test/core/Core.spec.ts:2:1)

有没有办法让 jest/ts-jest 在解析导入时包含 @paths

【问题讨论】:

    标签: typescript jestjs tsconfig ts-jest


    【解决方案1】:

    jest 不能使用 tsconfig 的路径映射,因为它是 ts 编译器时间,所以 jest 配置应该有相应的模块名称映射器 (https://jestjs.io/docs/en/configuration.html#modulenamemapper-object-string-string) 来解析别名路径。

    【讨论】:

      【解决方案2】:

      我想将以~/ 开头的模块paths 解析为我的&lt;baseUrl&gt;/&lt;moduleName&gt;

      感谢OJ Kwon链接我解决了它(给他点)。

      tsconfig.json

      module-resolution path-mapping doc

      {
        "compilerOptions": {
          "baseUrl": "src",
          "paths": {
            "~/*": ["*"]
          }
        },
      }
      

      笑话配置

      然后我们需要告诉jest 来解析路径。通过以下配置完成:

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

      【讨论】:

      • 这对我帮助很大,我的 ts 路径是 "@data/*": ["src/data/*"] 然后在我开玩笑的配置中添加:'@data/(. *)': '/src/data/$1',
      【解决方案3】:

      在根项目文件夹中添加 jest.config.js,内容如下。

      const { pathsToModuleNameMapper } = require('ts-jest/utils')
      const { compilerOptions } = require('./tsconfig')
      module.exports = {
          preset: 'ts-jest',
          testEnvironment: 'node',
          moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths),
          modulePaths: [
              '<rootDir>'
          ],
      }
      

      【讨论】:

        猜你喜欢
        • 2019-08-18
        • 1970-01-01
        • 2020-09-09
        • 2018-07-30
        • 2020-09-21
        • 2021-10-22
        • 2016-08-22
        • 1970-01-01
        • 2018-07-27
        相关资源
        最近更新 更多