ava: SyntaxError: Unexpected token import
ava: SyntaxError: Unexpected token import
所以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 的解决方案,我所做的是:
- 添加
.babelrc
内容:
{
"presets": [
"es2015",
"stage-2"
],
"plugins": [
"espower",
"transform-runtime"
]
}
- 添加到
package.json
:
"ava": {
"require": ["babel-register"],
"babel": "inherit"
}
AVA 只转译测试文件。不测试依赖关系,所以你需要在你的项目中设置 babel(我想你这样做是因为你正在使用 ES6)。
然后在 AVA 的设置中添加:
"ava": {
...
"babel": "inherit"
}
这意味着使用您的项目 babel 设置来转译测试依赖项。在 AVA 文档中查看更多信息:https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md
使用 rweng,我的解决方案更简单一些。
.babelrc
{
"presets": [
"es2015"
],
"plugins": [
"transform-runtime"
]
}
package.json
:
"ava": {
"require": ["babel-register"],
"babel": "inherit"
}
不幸的是,标准解决方案不适用于我的情况。
这是我的解决方案,适用于 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
所以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 的解决方案,我所做的是:
- 添加
.babelrc
内容:
{
"presets": [
"es2015",
"stage-2"
],
"plugins": [
"espower",
"transform-runtime"
]
}
- 添加到
package.json
:
"ava": {
"require": ["babel-register"],
"babel": "inherit"
}
AVA 只转译测试文件。不测试依赖关系,所以你需要在你的项目中设置 babel(我想你这样做是因为你正在使用 ES6)。
然后在 AVA 的设置中添加:
"ava": {
...
"babel": "inherit"
}
这意味着使用您的项目 babel 设置来转译测试依赖项。在 AVA 文档中查看更多信息:https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md
使用 rweng,我的解决方案更简单一些。
.babelrc
{
"presets": [
"es2015"
],
"plugins": [
"transform-runtime"
]
}
package.json
:
"ava": {
"require": ["babel-register"],
"babel": "inherit"
}
不幸的是,标准解决方案不适用于我的情况。 这是我的解决方案,适用于 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