在Jest中,使用Babel 7和preset-env时,"export { default } from module"无法正常工作。

3

当我迁移到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'],
  };
};

看起来jest不支持plugins,因为当我移除static defaultPropsstatic propTypes并将它们移到SearchInput.defaultPropsSearchInput.propTypes时,测试开始工作。


我能想到的唯一可能是你有依赖循环,因此你试图在SearchInput可用之前导入它。你需要制作一个简化的文件结构示例来证明文件夹结构。 - loganfsmyth
我已经更新了问题并提供了提示 - 看起来与Babel插件有关。 - dragonfly
我有同样的问题。我的应用程序似乎运行良好,但 Jest 测试失败并显示“无法读取未定义的属性'default'”。你找到解决方案了吗? - Ryan H.
@dragonfly 我也遇到了完全相同的问题。你成功解决了吗? - Balasubramanian
最终,事实证明我有一个非常难以发现的依赖循环。一旦我重新组织了文件,它就开始工作了。 - dragonfly
1个回答

0

我已经拥有所有的东西 - 大多数测试都通过了。失败的测试导入使用 index.js 文件导出的组件,格式为 export { default } from 'sthsth; - dragonfly
我也一样。你修好了吗? - rndm
我认为 default 是默认导出的保留字,但是既没有类文件也没有 index.js 文件。 - connexo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接