为什么命名的导出导致“找不到导出默认值” ..错误

时间:2019-04-17 21:40:56

标签: javascript reactjs

我试图将React useReducer()钩子添加到现有的Redux项目中,经过一些重构后,我得到了一个编译错误:

export 'default' (imported as 'estateAgent') was not found in './estateAgent'

有关此消息的其他问题,例如 Export default was not found 说明如何声明默认导出,但这不是我所需要的。这应该是命名导出,我不知道为什么React期望使用默认值。

以下是一些相关的代码段。

导致错误的行在index.js中:

import {EstateAgent} from '../pages/EstateAgent'

(花括号表示它是已命名的,而不是默认的export)。 EstateAgent.jsx包含一个容器函数,该容器函数定义:

const EstateAgent = (props) => {...

(通过正在阅读的网络示例,我将原始容器类EstateAgent更改为一个函数)

和连接器:

export const connectEstateAgent = connect(
  mapStateToProps,
  mapDispatchToProps
)(EstateAgent)

小写的“ estateAgent”似乎意味着Redux文件estateAgent.js,该文件定义了动作和化简器,并由EstateAgent.jsx导入,但不包含任何默认关键字或任何实际命名为estateAgent的实体,因此我不不知道错误行是怎么想到这个名字的。例如:

export const estateAgentReducer = (state = initialState, action) => {...

所以,问题是:为什么编译器在我不想这样做的时候坚持要求我尝试导入默认导出?

1 个答案:

答案 0 :(得分:0)

我描述的命名语法是完全正确的,但是我在另一个index.js文件中查看了错误的import语句。 “ EstateAgent”名称很好,但是estateAgent是redux子目录./src/redux/index.js中引用的reducer方法的名称。由于过于谨慎,我也将其重命名,并且该错误最初被另一个编译错误掩盖了。当我更新该文件中的名称时,它起作用了:

import {estateAgentReducer} from './estateAgent'

要点:错误消息非常准确,但是重叠的文件名和具有不同大小写的组件名称的重用可能会使像我这样仍在学习导航React的人感到困惑。