AVAjs - 插件或预设文件babel-preset-react / lib / index.js未导出函数

时间:2018-04-19 19:00:46

标签: reactjs babel ava

我正在尝试使用React配置AVAj。

所以这是我在package.json中的AVA配置:

"ava": {
"files": [
  "test/**/*.spec.js"
],
"sources": [
  "**/*.{js,jsx}",
  "!dist/**/*"
],
"concurrency": 4,
"failFast": true,
"failWithoutAssertions": false,
"tap": true,
"compileEnhancements": false,
"require": [
  "@babel/core",
  "@babel/register",
  "@babel/polyfill"
],
"babel": {
  "testOptions": {
    "babelrc": false,
    "testOptions": {
      "presets": [
        ["@babel/preset-env", {
          "targets": {
            "node": "current"
          }
        }],
        ["@babel/preset-react", {
          "pragma": "dom",
          "pragmaFrag": "DomFrag",
          "throwIfNamespace": false
        }]
      ]
    }
  }
}

}

我的测试文件:

import test from 'ava';
import React from 'react';
import Enzyme, { shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import Other from '../assets/js/components/Other';

Enzyme.configure({ adapter: new Adapter() });

test('has a .Foo class name', (t) => {
  const wrapper = shallow(<Other />);
  t.pass(wrapper);
});
  

无效:{ presets: [{option: value}] }有效:{ presets: [['presetName', {option: value}]] }

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您似乎正在使用AVA的1.0测试版。这使用Babel 7(本身处于测试阶段)来编译测试。但是,它扩展了使用不兼容预设的Babel配置。

您应该将整个项目升级到Babel 7(包括将babel-registerbabel-polyfill替换为@babel/register@babel/polyfill),或者自定义AVA&#39; { {1}}配置仅使用Babel 7插件(例如https://www.npmjs.com/package/@babel/preset-react)。

请注意,如果您选择采用后一种方法,则必须设置testOptions以确保AVA仍然不包含与Babel 6兼容的配置。