web-dev-qa-db-fra.com

ava: SyntaxError: Importation de jeton inattendue

Donc, ava est livré avec prise en charge ES2015 intégrée , ce qui fonctionne bien pour mes fichiers de test réels. Cependant, quand je fais

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

Je ne peux pas utiliser import et exporter dans le fichier d'aide, j'obtiens alors:

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

Je n'ai aucune configuration babel spécifique mise en place quant aux fichiers de test, cela fonctionne hors de la boîte. Quelqu'un peut-il m'expliquer pourquoi les dépendances d'aide ne sont pas transposées avec babel? En utilisant test/**/helpers suit même convention ava .

Merci, Robin

Solution

Donc, basé sur la solution de thangngoc89 , ce que j'ai fait pour le faire fonctionner était:

  1. Ajouter un .babelrc avec contenu:
{
  "presets": [
    "es2015",
    "stage-2"
  ],
  "plugins": [
    "espower",
    "transform-runtime"
  ]
}
  1. Ajouté à package.json:
"ava": {
  "require": ["babel-register"],
  "babel": "inherit"
}
28
rweng

AVA ne transpile que les fichiers de test. Ne testez pas les dépendances, vous devrez donc configurer babel dans votre projet (je suppose que vous l'avez fait parce que vous utilisez ES6 de toute façon).

Ensuite, dans le cadre d'AVA, ajoutez ceci:

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

Cela signifie que vous utilisez le paramètre babel de votre projet pour transpiler les dépendances de test. Voir plus d'informations dans les documents AVA: https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md

20
thangngoc89

En utilisant rweng , ma solution est sortie un peu plus simple.

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

Malheureusement, la solution standard n'a pas fonctionné pour mon cas. Voici ma solution qui a fonctionné pour ava + quasar + vue project

. 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"
}

installer des modules

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