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

index.js目录重导出场景下export default不生效问题排查

问题表现

导入采用「目录+index.js入口」模式组织的React组件时抛出如下报错:
export 'Window' (reexported as 'default') was not found in './Window' (possible exports: default)
相关文件结构与代码如下:

  • 目录结构:shared/components/Window 目录下包含Window.js、index.js、Window.css三个文件
  • Window.js源码:
import './Window.css';

export default function Window () {
    return (
        <div className='Window'>
            window
        </div>
    )
}
  • index.js源码:
export { Window as default } from './Window';
  • 失效导入语句(指向目录):
import Window from 'shared/components/Window';
  • 正常生效的导入语句(直接指向组件源文件):
import Window from 'shared/components/Window/Window';

相同结构在项目其他位置可正常运行,仅shared目录下的组件出现该问题,项目已配置src为baseUrl实现路径别名。

根因分析

报错信息已经给出明确提示:./Window模块仅存在default默认导出,不存在名为Window的命名导出。
你当前index.js里的重导出语法export { Window as default } from './Window',逻辑是从./Window模块中导入名为Window的命名导出,再将其作为当前index.js模块的默认导出,但Window.js里只写了默认导出,没有声明同名的Window命名导出,自然会抛出找不到导出项的错误。
其他目录相同结构能正常运行,通常是因为对应目录被Babel等编译工具的规则覆盖,插件自动为默认导出生成了同名命名导出;而shared目录大概率没被包含在编译规则的include范围内,自动转换逻辑不生效,就暴露了写法问题。

修复方案

二选一即可:

  • 修改index.js的重导出语法,直接重导出目标模块的默认导出,不需要依赖同名命名导出:
    // shared/components/Window/index.js
    export { default } from './Window';
    
  • 给Window.js补充同名命名导出,适配原有重导出写法:
    // shared/components/Window/Window.js
    import './Window.css';
    
    function Window () {
        return (
            <div className='Window'>
                window
            </div>
        )
    }
    // 补充同名命名导出
    export { Window }
    export default Window
    

如果改完后仍有路径解析问题,检查打包工具的extensions配置是否包含.js后缀,确认目录入口解析规则中index.js处于生效优先级即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:01:46