Как правильно импортировать пользовательские команды в проекте Cypress TypeScript?
После обновления моих основных зависимостей, @ nrwl / , @ angular / и cypress, мои тесты e2e как бы не работают. Я получаю следующую ошибку:
import './command';
^
ParseError: 'import' and 'export' may appear only with 'sourceType: module'
,
Cypress отображает эту ошибку в дополнение:
До обновления мы просто импортировали пользовательские команды прямо из command.ts
-файл в spec-файлах. Но также с помощью support/index.ts
появляется такая же ошибка, но потом в index-файле.
Единственное, что сработало (но на самом деле не может быть решением), это переместить пользовательскую команду в сам индексный файл и удалить оператор (ы) импорта.
И поскольку я выполняю эти тесты в NX-Workspace, у меня нет прямого доступа к любому веб-пакету или конфигурации Babel или чему-то подобному.
Любой намек или идея, что я мог попробовать?
2 ответа
Я нашел решение сам. Проблема была в том, что мне не хватало typescript preprocessor
,
Я не знаю почему, но до NX версии 7.4 (или даже выше) не было необходимости определять файл плагинов. Каким-то образом NX накрыл это под капотом.
Это то, что я должен был изменить:
// plugins/index.js
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
const { preprocessTypescript } = require('@nrwl/cypress/plugins/preprocessor');
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
// Preprocess Typescript
on('file:preprocessor', preprocessTypescript(config));
};
и ссылка на файл в cypress.json
:
{
"fileServerFolder": "./",
"fixturesFolder": "./src/fixtures",
"integrationFolder": "./src/integration",
"pluginsFile": "./src/plugins/index",
"supportFile": "./src/support/index.ts"
}
Ошибка ParseError: 'import' and 'export' may appear only with 'sourceType: module'.
из eslint
Чтобы исправить это добавить .eslintrc.json
файл в cypress/
каталог с содержанием:
{
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
}
}