【问题标题】:export { default } from module does not work with Babel 7 and preset-env in Jestexport { default } from module 不适用于 Babel 7 和 Jest 中的 preset-env
【发布时间】:2019-03-05 05:57:21
【问题描述】:

在我启动测试时迁移到 Babel 7 后出现此错误

TypeError: Cannot read property 'default' of undefined

对于这一行(例如index.js 文件):

export { default } from './SearchInput';

SearchInput.jsx 文件在同一个文件夹中并且正在使用

export class SearchInput {}

语法。

这仅在 Jest 测试中发生(在应用运行时有效)。

我该如何解决?

编辑:

这是我的 babel 配置 babel.config.js:

module.exports = function(api) {
  api.cache.forever();
  return {
    presets: ['@babel/preset-env', '@babel/preset-react'],
    plugins: ['@babel/plugin-proposal-class-properties'],
  };
};

似乎开玩笑不尊重plugins,因为当我删除static defaultPropsstatic propTypes并将它们移至SearchInput.defaultPropsSearchInput.propTypes时,测试开始工作。

【问题讨论】:

  • 我能看到这种情况发生的唯一方法是如果你有依赖周期,所以你试图在 SearchInput 实际可用之前导入它。您需要制作一个简化的文件结构示例来演示文件夹结构以进行验证。
  • 我已经用提示更新了问题 - 似乎它与 babel 插件有关
  • 我也有同样的问题。我的应用程序似乎运行良好,但 Jest 测试失败并显示“无法读取未定义的属性‘默认’”。你找到解决办法了吗?
  • @dragonfly 我也面临着确切的问题。你设法让它工作了吗?
  • 最后,我发现我的依赖循环真的很难发现。一旦我按文件重新组织就开始工作了。

标签: javascript babeljs jestjs babel-loader babel-jest


【解决方案1】:

你可能也忘了升级 babel-jest。

注意:如果你使用的是 babel 版本 7,你必须安装 babel-jest

yarn add --dev babel-jest 'babel-core@^7.0.0-bridge' @babel/core

https://github.com/facebook/jest/tree/master/packages/babel-jest

【讨论】:

  • 我拥有一切 - 大多数测试都通过了。失败的是导入使用index.js 文件和export { default } from 'sthsth; 导出的组件
  • 对我来说也一样。你解决了吗?
  • 我假设 default 是默认导出的保留字,类文件和 index.js 似乎都没有。
猜你喜欢
  • 2017-04-23
  • 2017-12-28
  • 2019-07-18
  • 2019-08-04
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多