#typescript #vue.js #jestjs #testcafe #ts-jest
Вопрос:
У меня есть проект Vue 2, созданный с помощью интерфейса командной строки Vue, в котором некоторое время проводились тесты Testcafe. Теперь я пытаюсь добавить еще и шутливые тесты.
Когда я запускаю свое приложение ( npm run serve
= vue-cli-service serve
), я получаю следующие ошибки машинописи из-за объявления глобальных функций как Jest, так и Testcafe test()
:
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.
Но, как вы можете видеть выше, моя конфигурация все еще загружает типы node_modules/testcafe/ts-defs/index.d.ts
Testcafe , даже когда я не запускаю Testcafe, а просто запускаю приложение.
Я создал приложение skeleton Vue 2 с той же проблемой и загрузил его на Github здесь. Проблема с типом не возникала до тех пор, пока я не добавил тест по адресу tests/testcafe/Testcafe.spec.ts
.
Что я могу сделать, чтобы избавиться от конфликта такого типа? Есть ли что-то простое, что я могу сделать, чтобы остановить загрузку типов Testcafe при запуске приложения?
Ответ №1:
В моем проекте добавление "tests/testcafe"
exclude
свойства в tsconfig.json
останавливает появление ошибки при запуске сервера разработки, и тесты TestCafe все равно будут выполняться (что было неожиданностью). Поэтому я думаю, что сказать Typescript (запускаемый Vue CLI / Webpack?) не компилировать тесты Testcafe-это один из ответов.
Я чувствую, что, вероятно, есть другой ответ, в котором типы TestCafe игнорируются, но я не знаю, как этого добиться. (Я пытался сделать это несколькими разными способами.)