gpt4 book ai didi

reactjs - Jest 不跟踪符号链接(symbolic link)文件夹中的文件并尝试使用主共享文件夹

转载 作者:行者123 更新时间:2023-12-05 05:57:53 25 4
gpt4 key购买 nike

问题是 - 如何强制 Jest 遵循符号链接(symbolic link)的共享文件夹文件结构而不是主共享文件夹?

我有下一个文件结构:

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.ts 使用 config.ts,其中通过路径“./settings.ts”导入设置文件,但在共享主文件夹内,它看起来像“文件不存在”(没关系)。但是 Jest 在项目测试中遇到使用共享文件测试时失败并出现错误:"../../shared-main/config.ts:9:35 - 错误 TS2307: 找不到模块 '../settings' 或其对应的类型声明。”

如何解决这个问题并强制 Jest 使用符号链接(symbolic link)文件夹而不是主文件夹中的 config.ts?

最佳答案

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

但是我不太确定符号链接(symbolic link)是你的问题,当像这样使用 typescript 并尝试使用你的项目 rootDir 之外的文件时,它不会找到它的类型或者它会提示它找不到如果您已将其添加到 tsconfig include/exclude 中,请为它输入类型。现在我只能假设您正在使用 tsc --project 以及每个项目的特定配置文件。

// tsconfig.json

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

如果你做了类似的事情,那么它不会在 projectA 之外找到任何类型,所以 config.ts 和 utils.ts 中的任何东西都不会有任何类型或能够找到任何模块,除非它们被包含在你的 tsconfig.

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

// tsconfig.json

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

连同这样的目录结构:

- tsconfig.json
- example.ts
- src

那么 example.ts 中的任何内容都将无法找到其类型或模块导入。

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

// .jestrc.json

"testRegex": ["test/.*.[jt]s"],

...

"globals": {
"ts-jest": {
"tsconfig": {
"rootDir": "."
}
}
}

关于reactjs - Jest 不跟踪符号链接(symbolic link)文件夹中的文件并尝试使用主共享文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68687815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com