Подтвердить что ты не робот

Ava: SyntaxError: неожиданный импорт токена

Итак, ava поставляется с встроенной поддержкой ES2015, которая отлично подходит для моих реальных тестовых файлов. Однако, когда я делаю

import {newUser, createUser, login} from './helpers/user';

Я не могу использовать import и экспортировать в вспомогательный файл, затем получаю:

Users/rowe/Code/fv/foxvision-api/test/api/helpers/user.js:1
(function (exports, require, module, __filename, __dirname) { import request from 'supertest';

SyntaxError: Unexpected token import

У меня нет конкретной конфигурации буфера, настроенной как для тестовых файлов, которые она работает из коробки. Может ли кто-нибудь объяснить мне, почему вспомогательные зависимости не передаются с помощью babel? Использование test/**/helpers даже после соглашения ava.

Спасибо, Робин

Решение

Итак, на основе thangngoc89 решение, которое я сделал, чтобы заставить его работать, было:

  • Добавьте .babelrc с контентом:
{
  "presets": [
    "es2015",
    "stage-2"
  ],
  "plugins": [
    "espower",
    "transform-runtime"
  ]
}
  1. Добавлен в package.json:
"ava": {
  "require": ["babel-register"],
  "babel": "inherit"
}
4b9b3361

Ответ 1

AVA только переносит тестовые файлы. Не проверяйте зависимости, поэтому вам нужно будет настроить babel в своем проекте (я полагаю, вы сделали это, потому что в любом случае используете ES6).

Затем в настройке AVA добавьте следующее:

"ava": {
  ...
  "babel": "inherit"
}

Это означает, что используйте настройку babel вашего проекта для переноса тестовых зависимостей. Смотрите больше информации в AVA документах: https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md

Ответ 2

Используя rweng, мое решение получилось немного проще.

  • .babelrc
{
  "presets": [
    "es2015"
  ],
  "plugins": [
    "transform-runtime"
  ]
}
  1. package.json:
"ava": {
  "require": ["babel-register"],
  "babel": "inherit"
}

Ответ 3

К сожалению, стандартное решение не работало для моего случая. Вот мое решение, которое работало для проекта ava + quasar + vue

.babelrc

{
  "presets": [
    "es2017",
    "@ava/stage-4",
    "stage-3"
  ],
  "plugins": [
    "transform-runtime"
  ]
}

package.json

"ava": {
  "require": [
    "babel-register"
  ],
  "babel": "inherit"
},
"scripts": {
  "ava": "NODE_ENV=test ava",
  "test": "ava",
  "test:watch": "ava --watch --verbose"
}

установить модули

yarn add babel-register babel-preset-es2017 @ava/babel-preset-stage-4 babel-plugin-transform-runtime babel-preset-stage-3 --dev