2016-04-19 17 views
20

Tak więc program ava zawiera build-in ES2015 support, który działa dobrze dla moich rzeczywistych plików testowych. Jednak, gdy robięava: Błąd składni: nieoczekiwany import tokena

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

nie mogę używać import i eksport w pliku pomocnika, to wówczas otrzymujemy:

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 

mam żadnej konkretnej konfiguracji babel skonfigurować jak dla plików testowych to działa po wyjęciu z pudełka. Czy ktoś może mi wyjaśnić, dlaczego zależności pomocnicze nie są transponowane za pomocą babel? Używanie test/**/helpers jest nawet następujące po ava convention.

Dzięki, Robin

Rozwiązanie

Więc na podstawie rozwiązania thangngoc89 „s, co zrobiłem, aby praca była:

  1. Dodaj .babelrc z zawartością:
{ 
    "presets": [ 
    "es2015", 
    "stage-2" 
    ], 
    "plugins": [ 
    "espower", 
    "transform-runtime" 
    ] 
} 
  1. Dodano do package.json:
"ava": { 
    "require": ["babel-register"], 
    "babel": "inherit" 
} 
+2

Opcja ' "wymagają": [ "Babel zarejestrować"],' w package.json jest konieczne, chociaż http://babeljs.io/ instalacja docs/setup/# nie wspomina o tym. –

Odpowiedz

18

AVA tylko transpile plików testowych. Nie testuj zależności, więc będziesz musiał ustawić babel w swoim projekcie (prawdopodobnie zrobiłeś to, ponieważ i tak używasz ES6).

Następnie w ustawieniach AVA, dodać to:

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

Oznacza to, że korzystanie z ustawienia babel projektu do transpile zależności testowych. Zobacz więcej informacji w dokumentach AVA: https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md

2

Korzystając z rweng, moje rozwiązanie było nieco prostsze.

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

Niestety standardowe rozwiązanie nie działa w moim przypadku. Oto moje rozwiązanie który pracował dla Ava + kwazara + projektu vue

.babelrc

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

pakietu.json

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

zainstalować moduły

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