Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ava: SyntaxError: Unexpected token import

Tags:

ava

So ava comes with build-in ES2015 support, which works fine for my actual test files. However, when I do

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

I can't use import and export in the helper file, I then get:

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 

I have no specific babel configuration set up as for the test files it works out of the box. Can anyone explain to me why the helper dependencies are not transpiled with babel? Using test/**/helpers is even following ava convention.

Thanks, Robin

Solution

So based on thangngoc89's solution, what I did to make it work was:

  1. Add a .babelrc with content:
{   "presets": [     "es2015",     "stage-2"   ],   "plugins": [     "espower",     "transform-runtime"   ] } 
  1. Added to package.json:
"ava": {   "require": ["babel-register"],   "babel": "inherit" } 
like image 225
rweng Avatar asked Apr 19 '16 13:04

rweng


2 Answers

AVA only transpile the test files. Not test dependencies so you will need to setup babel in your project (I suppose you did it because you're using ES6 anyway).

Then in AVA's setting, add this :

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

It means that use your project babel setting to transpile the test dependencies. See more information in AVA docs: https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md

like image 100
thangngoc89 Avatar answered Oct 04 '22 05:10

thangngoc89


Using rweng, my solution came out a bit simpler.

  1. .babelrc
{   "presets": [     "es2015"   ],   "plugins": [     "transform-runtime"   ] } 
  1. package.json:
"ava": {   "require": ["babel-register"],   "babel": "inherit" } 
like image 34
Jason Kim Avatar answered Oct 04 '22 06:10

Jason Kim