'ava' 测试的 ES6 导入不工作

ES6 import for 'ava' test not working

我按照文档使用 ava 创建了我的第一个测试,但它似乎 运行 不正确。我收到以下错误。我尝试在文件顶部添加 import 'babel-register';,它起作用了,但前提是我 运行 一个特定的测试文件。例如ava ./test/helpers/test_helper.js。 运行 ava 本身虽然......导致下面的导入错误。有没有人知道如何解决这个问题?入门指南使用 ES6 导入,我不知道为什么我的不能正常工作。

(function (exports, require, module, __filename, __dirname) { import test from 'ava'; ^^^^^^ SyntaxError: Unexpected token import

test.js

import test from 'ava';

test(t => {
  t.deepEqual([1, 2], [1, 2]);
});

yarm/npm 安装后,运行 ava --init 了吗?

在package.json中,命令是怎么说的? 如果你 运行(如果你使用 npm)npm run test,它应该执行你的 package.json 中的命令。

如果你的测试目录中有任何 .js (ES6),它应该执行它(示例也在他们的 github 页面 https://github.com/avajs/ava 上)。

您不需要添加上面评论中提到的所有内容。 这些命令应该能让你正常工作 运行:

mkdir avatest
cd avatest
npm init
npm install --global ava (you probably did this already)
npm install --save-dev ava
ava --init
touch test/test.js
atom test/test.js (pasted your script)
npm run test
> 1 passed

添加到您的package.json

"ava": {
  "files": [
    "test/**/*.js"
  ],
  "require": [
    "babel-register"
  ],
  "babel": "inherit"
},

你的.babelrc

{
  "presets": ["es2015"]
}

然后你的进口应该工作。

有一种更简单的方法可以使用 AVA 的 ES 模块

$ npm install esm --save-dev 

然后在你的 package.json 添加


{
    "ava": {
        "require": [
            "esm"
        ]
    }
}

Babel 永远无法正常工作,我每天花在调试工具上的时间比我的代码还要多!

将此添加到您的 package.json

 "ava": {
    "babel": true
  }

例如

https://github.com/e2e-boilerplate/selenium-webdriver-es-modules-babel-ava/blob/master/package.json

https://github.com/e2e-boilerplate/puppeteer-es-modules-babel-ava/blob/master/package.json

对我来说,只需添加

"type": "module",

给我的 package.json

为了

import test from 'ava';

test('foo', t => {
    t.pass();
});

运行正确。