ava:SyntaxError:意外的令牌导入

时间:2016-04-19 13:46:04

标签: ava

所以ava附带build-in ES2015 support,它适用于我的实际测试文件。但是,当我做的时候

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配置,因为它开箱即用的测试文件。任何人都可以向我解释为什么帮助器依赖关系不会被babel转换?使用test/**/helpers甚至关注ava convention

谢谢, 罗宾

解决方案

基于thangngoc89的解决方案,我所做的工作是:

  1. 添加内容为.babelrc的内容:
  2. {
      "presets": [
        "es2015",
        "stage-2"
      ],
      "plugins": [
        "espower",
        "transform-runtime"
      ]
    }
    
    1. 已添加至package.json
    2. "ava": {
        "require": ["babel-register"],
        "babel": "inherit"
      }
      

3 个答案:

答案 0 :(得分:20)

AVA只会传输测试文件。不测试依赖项,因此您需要在项目中设置babel(我想你是因为你正在使用ES6而这样做了。)

然后在AVA的设置中,添加:

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

这意味着使用项目babel设置来转换测试依赖项。请参阅AVA文档中的更多信息:https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md

答案 1 :(得分:2)

使用Running MATLAB from Python,我的解决方案变得更简单了。

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

答案 2 :(得分:2)

不幸的是,标准解决方案对我的案例不起作用。 这是我的解决方案,适用于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