【问题标题】:ES6 import for 'ava' test not working'ava' 测试的 ES6 导入不起作用
【发布时间】:2017-01-17 08:16:37
【问题描述】:

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

(function (exports, require, module, __filename, __dirname) { import 来自“ava”的测试; ^^^^^^ SyntaxError: Unexpected token import

test.js

import test from 'ava';

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

【问题讨论】:

    标签: javascript testing ava


    【解决方案1】:

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

    $ npm install esm --save-dev 
    
    

    然后在你的 package.json 中添加

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

    Babel 永远无法正常工作,我每天花更多的时间在调试工具上,而不是我的代码与所有这些 CS 堆!

    【讨论】:

    • 我发现这是最简单、更清洁的解决方案。
    • 圣烟。我不敢相信这刚刚奏效。我一直在艰难地在一个使用 AVA 的旧网站上进行 babel 升级,但非常痛苦和沮丧。我不敢相信esm 第一次尝试就成功了。
    • 不再支持。
    【解决方案2】:

    添加到您的package.json

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

    你的.babelrc

    {
      "presets": ["es2015"]
    }
    

    然后你的导入应该可以工作了。

    【讨论】:

    • 太棒了!修复了错误,但我遇到了另一个问题。我会把它贴在上面,很高兴听到你的想法:)
    • 这仍然与 AVA 1.x 相关吗?
    【解决方案3】:
    【解决方案4】:

    对我来说,添加就足够了

    "type": "module",
    

    致我的package.json

    为了制作

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

    正确运行。

    【讨论】:

      【解决方案5】:

      在你安装了 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
      

      【讨论】:

      • 投了反对票,因为这个答案解决了设置 AVA 但问题是关于当您导入到测试文件中的文件使用“导入”或“导出”或任何需要的功能时发生的错误被转译。 AVA 提到它不会转译导入到测试中的代码,但会显示您如何使其工作:github.com/avajs/ava#transpiling-imported-modules
      • 另外,它可能会被否决,因为它不起作用。首先,指令列表没有提到您需要在 package.json 的“script”键中设置“test”:“ava”。之后,我收到错误消息“TypeError:测试必须有标题”。这可能是由于我使用了更新版本的 ava:2.4.0。如果您问我,这是一个可怕的变化,因为输出会为您提供行号,因此无需命名每个测试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      相关资源
      最近更新 更多