ava: SyntaxError: importación de token inesperada
(3)
Así que ava viene con soporte ES2015 incorporado , que funciona bien para mis archivos de prueba reales. Sin embargo, cuando lo hago
import {newUser, createUser, login} from ''./helpers/user'';
No puedo usar import
y exportar en el archivo auxiliar, luego obtengo:
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
No tengo una configuración específica de babel configurada, ya que para los archivos de prueba funciona de forma inmediata. ¿Alguien puede explicarme por qué las dependencias del ayudante no se transfieren a babel? El uso de test/**/helpers
es incluso siguiendo la convención ava .
Gracias robin
Solución
Entonces, basado en la solución de thangngoc89 , lo que hice para que funcionara fue:
- Agrega un
.babelrc
con contenido:
{
"presets": [
"es2015",
"stage-2"
],
"plugins": [
"espower",
"transform-runtime"
]
}
- Añadido a
package.json
:
"ava": {
"require": ["babel-register"],
"babel": "inherit"
}
AVA solo transpila los archivos de prueba. No pruebes dependencias, así que necesitarás configurar babel en tu proyecto (supongo que lo hiciste porque de todos modos estás usando ES6).
Luego, en la configuración de AVA, agregue esto:
"ava" {
...
"babel": "inherit"
}
Significa que usa la configuración de babel de tu proyecto para recopilar las dependencias de prueba. Ver más información en los documentos de AVA: https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md
Desafortunadamente la solución estándar no funcionó para mi caso. Aquí está mi solución que funcionó para el proyecto ava + quasar + vue
.babelrc
{
"presets": [
"es2017",
"@ava/stage-4",
"stage-3"
],
"plugins": [
"transform-runtime"
]
}
paquete.json
"ava": {
"require": [
"babel-register"
],
"babel": "inherit"
},
"scripts": {
"ava": "NODE_ENV=test ava",
"test": "ava",
"test:watch": "ava --watch --verbose"
}
instalar modulos
yarn add babel-register babel-preset-es2017 @ava/babel-preset-stage-4 babel-plugin-transform-runtime babel-preset-stage-3 --dev
Usando , mi solución salió un poco más simple.
-
.babelrc
{
"presets": [
"es2015"
],
"plugins": [
"transform-runtime"
]
}
-
package.json
:
"ava": {
"require": ["babel-register"],
"babel": "inherit"
}