You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React类无法导出问题排查:withRouter相关导入不匹配错误

解决React类无法导出/导入的问题

你的问题根本不是withRouter的问题,而是导出和导入的语法不匹配导致的!

问题分析

你在coachDashMain.js里用的是默认导出:

export default withRouter(CoachDashMain);

但在其他文件里却用了命名导入的语法:

import {CoachDashMain} from './components/Coach/coachDashMain'

这两种语法完全不兼容,所以才会抛出“找不到名为CoachDashMain的导出项”的错误。

两种解决方案任选其一:

方案1:修改导入语句(推荐,适配你的默认导出写法)

把导入改成默认导入的语法,去掉包裹的花括号即可:

import CoachDashMain from './components/Coach/coachDashMain'

方案2:修改导出语句为命名导出

如果你想保留命名导入的方式,可以调整导出逻辑为命名导出:

// 方式一:直接定义并导出包装后的组件
export const CoachDashMain = withRouter(class CoachDashMain extends Component {
  render() {
    return(
      <div>
        <HeaderAdmin />
        <DashBoxes />
        <MetaData />
      </div>
    );
  }
});

// 方式二:先定义类再单独导出
class CoachDashMain extends Component {
  render() {
    return(
      <div>
        <HeaderAdmin />
        <DashBoxes />
        <MetaData />
      </div>
    );
  }
}
export const CoachDashMainWithRouter = withRouter(CoachDashMain);
// 此时导入要对应改成 {CoachDashMainWithRouter}

补充说明

  • 默认导出:一个文件只能有一个默认导出,导入时可以自定义组件名称,不需要花括号。
  • 命名导出:一个文件可以有多个命名导出,导入时必须使用对应的名称和花括号包裹。

你的代码里withRouter只是给组件添加了路由相关的props,本身不会影响导出逻辑,核心问题就是导出与导入的语法不匹配~

内容的提问来源于stack exchange,提问作者user4747724

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:44:28