typescript - 如何解决 Testcafe 和 Jest 之间的类型冲突?(“无法重新声明块范围变量'test'”)
问题描述
我有一个使用 Vue CLI 创建的 Vue 2 项目,它已经进行了一段时间的 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
有一个旧的 Testcafe问题说这已在 2019 年修复,并且:
在编译任何 TypeScript 源文件时,默认情况下只会自动加载来自 node_modules/@types 目录的定义。
但是,正如您在上面看到的,我的配置仍在从 加载 Testcafe 类型node_modules/testcafe/ts-defs/index.d.ts
,即使我没有运行 Testcafe 而只是运行应用程序。
我创建了一个有同样问题的骨架 Vue 2 应用程序并将其上传到 Github here。直到我在tests/testcafe/Testcafe.spec.ts
.
我能做些什么来摆脱这种类型的冲突?在运行应用程序时,我可以做一些简单的事情来停止加载 Testcafe 类型吗?
解决方案
在我的项目中,添加"tests/testcafe"
到exclude
属性 intsconfig.json
停止运行开发服务器时出现的错误,并且 TestCafe 测试仍将运行(这是一个惊喜)。所以我想告诉 Typescript(由 Vue CLI / Webpack 运行?)不要编译 Testcafe 测试是一个答案。
我觉得可能还有另一个答案是忽略 TestCafe 的类型,但我不知道如何实现。(我尝试了几种不同的方法。)
推荐阅读
- python - JSON 每行写入一个列表元素
- c# - 如何使用 NAudio 库循环播放音频?
- apache-kafka - Ignite Source Kafka 连接器是否提供数据的主题分区?
- html - NVDA 屏幕阅读器未读出表格元素内容,但由 VoiceOver 读出
- php - Laravel 6 升级后单元测试变得不稳定
- mysql - 为什么我在 MySQL 中使用常用表达式表时出现错误?错误 1064 (42000)
- amazon-web-services - 第一次没有加载程序集?
- python - Python中的动态SQL语句
- github-actions - 空手道报告导出为 github 操作工作流中的工件
- python - 访问没有命名空间前缀的 XML 中的特定标签属性