【问题标题】:AVAjs - Plugin or preset file babel-preset-react/lib/index.js did not export a functionAVAjs - 插件或预设文件 babel-preset-react/lib/index.js 没有导出函数
【发布时间】:2018-04-19 19:00:45
【问题描述】:

我正在尝试使用 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}]] }

谁能帮帮我?

【问题讨论】:

    标签: reactjs babeljs ava


    【解决方案1】:

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

    您应该将整个项目升级到 Babel 7(包括将 babel-registerbabel-polyfill 替换为 @babel/register@babel/polyfill),或者自定义 AVA 的 testOptions 配置以仅使用 Babel 7 插件(例如 @ 987654321@).

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

    【讨论】:

    • 我已将 babel 导入更新到版本 7 beta,但又遇到了另一个错误。我的问题已更新。
    • 看起来预设配置错误。 package.json 示例似乎不正确,您不应该测试 testOptions,但我认为这不会导致此错误。
    猜你喜欢
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2019-06-09
    • 2018-05-29
    • 2019-06-14
    • 2019-03-03
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多