Как правильно импортировать пользовательские команды в проекте Cypress TypeScript? - PullRequest
1 голос
/ 01 июля 2019

После обновления моих основных зависимостей, @ nrwl / , @ angular / и cypress, мои e2e-тесты не работают. Я получаю следующую ошибку:

import './command'; ^ ParseError: 'import' and 'export' may appear only with 'sourceType: module'.

Cypress отображает эту ошибку дополнительно: enter image description here

Это обновленные зависимости: enter image description here

До обновления мы просто импортировали пользовательские команды прямо из файла command.ts в spec-файлах. Но также с помощью support/index.ts появляется такая же ошибка, но затем в index-файле.

Единственное, что сработало (но на самом деле не может быть решением), это переместить пользовательскую команду в сам файл индекса и удалить оператор (ы) импорта.

И поскольку я выполняю эти тесты в NX-Workspace, у меня нет прямого доступа к любому веб-пакету или конфигурации Babel или чему-то подобному.

Любой намек или идея, что я могу попробовать?

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Я нашел решение сам. Проблема была в том, что мне не хватало 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"
  }
0 голосов
/ 01 июля 2019

Ошибка ParseError: 'import' and 'export' may appear only with 'sourceType: module'. от eslint

Чтобы исправить это, добавьте файл .eslintrc.json в каталог cypress/ с содержанием:

{
  "parserOptions": {
    "ecmaVersion": 2018,
    "sourceType": "module"
  }
}
...