如何解决 Testcafe 和 Jest 之间的类型冲突? ("Cannot redeclare block-scoped variable 'test'")
How do I resolve a type conflict between Testcafe and Jest? ("Cannot redeclare block-scoped variable 'test'")
我有一个 Vue 2 项目,它是使用 Vue CLI 创建的,已经进行了一段时间的 Testcafe 测试。
现在我也在尝试添加 Jest 测试。
当我 运行 我的应用程序 (npm run serve
= vue-cli-service serve
) 时,由于 Jest 和 Testcafe 都声明了全局 test()
函数,我收到以下 Typescript 错误:
ERROR in /Users/.../app/node_modules/@types/jest/index.d.ts(44,13):
44:13 Cannot redeclare block-scoped variable 'test'.
42 | declare var fit: jest.It;
43 | declare var xit: jest.It;
> 44 | declare var test: jest.It;
| ^
45 | declare var xtest: jest.It;
46 |
47 | declare const expect: jest.Expect;
ERROR in /Users/.../app/node_modules/testcafe/ts-defs/index.d.ts(2397,15):
2397:15 Cannot redeclare block-scoped variable 'test'.
2395 |
2396 | declare const fixture: FixtureFn;
> 2397 | declare const test: TestFn;
| ^
2398 |
Version: typescript 3.7.5
有 an old Testcafe 问题表明此问题已在 2019 年修复,并且:
Only definitions from the node_modules/@types directory are loaded automatically by default when compiling any TypeScript source file.
但是,正如您在上面看到的,我的配置仍在从 node_modules/testcafe/ts-defs/index.d.ts
加载 Testcafe 类型,即使我没有 运行ning Testcafe 而只是 运行ning应用
我创建了一个具有相同问题的框架 Vue 2 应用程序并将其上传到 Github here。
直到我在 tests/testcafe/Testcafe.spec.ts
.
添加测试后才出现类型问题
我该怎么做才能摆脱这种类型冲突?在 运行 应用程序时,我可以做些什么来停止加载 Testcafe 类型?
在我的项目中,将 "tests/testcafe"
添加到 tsconfig.json
中的 exclude
属性 停止 运行 开发服务器时出现的错误,并且TestCafe 测试仍将 运行(这是一个惊喜)。所以我想告诉 Typescript(运行 通过 Vue CLI / Webpack?)不要编译 Testcafe 测试是一个答案。
我觉得可能还有另一个答案忽略了 TestCafe 的类型,但我不知道如何实现。 (我尝试了几种不同的方法。)
我有一个 Vue 2 项目,它是使用 Vue CLI 创建的,已经进行了一段时间的 Testcafe 测试。 现在我也在尝试添加 Jest 测试。
当我 运行 我的应用程序 (npm run serve
= vue-cli-service serve
) 时,由于 Jest 和 Testcafe 都声明了全局 test()
函数,我收到以下 Typescript 错误:
ERROR in /Users/.../app/node_modules/@types/jest/index.d.ts(44,13):
44:13 Cannot redeclare block-scoped variable 'test'.
42 | declare var fit: jest.It;
43 | declare var xit: jest.It;
> 44 | declare var test: jest.It;
| ^
45 | declare var xtest: jest.It;
46 |
47 | declare const expect: jest.Expect;
ERROR in /Users/.../app/node_modules/testcafe/ts-defs/index.d.ts(2397,15):
2397:15 Cannot redeclare block-scoped variable 'test'.
2395 |
2396 | declare const fixture: FixtureFn;
> 2397 | declare const test: TestFn;
| ^
2398 |
Version: typescript 3.7.5
有 an old Testcafe 问题表明此问题已在 2019 年修复,并且:
Only definitions from the node_modules/@types directory are loaded automatically by default when compiling any TypeScript source file.
但是,正如您在上面看到的,我的配置仍在从 node_modules/testcafe/ts-defs/index.d.ts
加载 Testcafe 类型,即使我没有 运行ning Testcafe 而只是 运行ning应用
我创建了一个具有相同问题的框架 Vue 2 应用程序并将其上传到 Github here。
直到我在 tests/testcafe/Testcafe.spec.ts
.
我该怎么做才能摆脱这种类型冲突?在 运行 应用程序时,我可以做些什么来停止加载 Testcafe 类型?
在我的项目中,将 "tests/testcafe"
添加到 tsconfig.json
中的 exclude
属性 停止 运行 开发服务器时出现的错误,并且TestCafe 测试仍将 运行(这是一个惊喜)。所以我想告诉 Typescript(运行 通过 Vue CLI / Webpack?)不要编译 Testcafe 测试是一个答案。
我觉得可能还有另一个答案忽略了 TestCafe 的类型,但我不知道如何实现。 (我尝试了几种不同的方法。)