Jest 不关注符号链接文件夹中的文件,并尝试使用主共享文件夹



问题是-如何强制Jest遵循符号链接共享文件夹文件结构,而不是主要共享文件夹?

我有下一个文件结构:

root
├── projects
│   ├── A
│   │   ├── node_modules
│   │   ├── shared (symlink ../../shared-main)
│   │   ├── components
│   │   ├── settings.ts
│   ├── B
│   │   ├── node_modules
│   │   ├── shared (symlink ../../shared-main)
│   │   ├── components
│   │   ├── settings.ts
├── shared-main
│   ├── utils.ts
│   ├── config.ts

在我的项目A和B中,我使用共享文件夹中的utils。跑龙套。它使用config。它通过路径"。/Settings"导入设置文件。,但在共享主文件夹中,它看起来像"文件不存在"。(还可以)。但是在项目的测试中,当Jest遇到使用共享文件测试时,会出现错误:"../../shared-main/config。ts:9:35 -错误TS2307:找不到模块…/settings'或其对应的类型声明。">

如何绕过这个并强制Jest使用config。Ts从符号链接文件夹而不是主文件夹?

在你的jest配置中"testRegex": ["test/.*.[jt]s"],如何,这样它就不会尝试找到共享文件,如果你在多个项目中使用共享文件,那么没有一个项目应该测试这些文件,它们应该只测试自己的文件。

然而,我不太确定符号链接是你的问题,当使用这样的typescript并试图使用项目rootDir之外的文件时,它不会找到它的类型,或者它会抱怨它找不到它的类型,如果你把它添加到tsconfig include/exclude。现在我只能假设你正在使用tsc——project,为每个项目配置特定的配置文件。

// tsconfig.json
"include": ["projectA/**/*.ts"],

如果你做了这样的事情,那么它将不会在projectA之外找到任何类型,所以在config中任何东西。t和utils。Ts将没有任何类型或能够找到任何模块,除非它们包含在您的tsconfig中。

显示一个更简单的例子,如果我有:

// tsconfig.json
...
includes: ["src/**/*.ts"]
...

还有如下目录结构:

- tsconfig.json
- example.ts
- src

然后任何例子。Ts将无法找到它的类型或模块导入。

在我的项目中,我解决这个问题的方法是使用ts-jest以及指定在哪里找到测试,以及覆盖全局rootDir。

// .jestrc.json
"testRegex": ["test/.*.[jt]s"],
...
"globals": {
"ts-jest": {
"tsconfig": {
"rootDir": "."
}
}
}

相关内容