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



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

所以这是我在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}]] }

谁能帮我?

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

你应该将整个项目升级到 Babel 7(包括用 @babel/register@babel/polyfill 替换babel-registerbabel-polyfill(,或者自定义 AVA 的testOptions配置以仅使用 Babel 7 插件(例如 https://www.npmjs.com/package/@babel/preset-react(。

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

最新更新