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