问题是-如何强制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": "."
}
}
}