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"
]
}
- Добавлен в
package.json
:
"ava": {
"require": ["babel-register"],
"babel": "inherit"
}
Ответы
Ответ 1
AVA только переносит тестовые файлы. Не проверяйте зависимости, поэтому вам нужно будет настроить babel в своем проекте (я полагаю, вы сделали это, потому что в любом случае используете ES6).
Затем в настройке AVA добавьте следующее:
"ava": {
...
"babel": "inherit"
}
Это означает, что используйте настройку babel вашего проекта для переноса тестовых зависимостей. Смотрите больше информации в AVA документах: https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md
Ответ 2
Используя rweng, мое решение получилось немного проще.
{
"presets": [
"es2015"
],
"plugins": [
"transform-runtime"
]
}
-
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