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

React构建报错__WEBPACK_DEFAULT_EXPORT__初始化前访问解决方法

问题现象

React项目开发构建时触发运行时报错:

Uncaught ReferenceError: Cannot access '__WEBPACK_DEFAULT_EXPORT__' before initialization

报错定位在Row.js 第18行,完整错误调用栈如下:

Uncaught ReferenceError: Cannot access '__WEBPACK_DEFAULT_EXPORT__' before initialization
at Module.default (Row.js:18:1)
at ./src/axios.js (axios.js:2:1)
at options.factory (react refresh:6:1)
at __webpack_require__ (bootstrap:24:1)
at fn (hot module replacement:62:1)
at ./src/Banner.js (App.js:20:1)
at options.factory (react refresh:6:1)
at __webpack_require__ (bootstrap:24:1)
at fn (hot module replacement:62:1)
at ./src/App.js (bundle.js:18:65)

复现规则:在Row.js文件中编写fetchUrl、useState、useEffect相关代码时必现该错误。

根因分析

该错误是模块循环依赖导致的初始化顺序异常。
从调用栈可以看到webpack的模块加载链路为:App.js → Banner.js → axios.js → Row.js。如果链路中存在反向引用(比如Row.js引入的模块又反过来依赖还没初始化完成的Row模块),webpack处理ESM默认导出时,会在模块代码还没执行完成时就尝试读取__WEBPACK_DEFAULT_EXPORT__,直接触发引用提前的报错。
高频触发场景:

  • 基础请求文件axios.js反向引入了业务组件(Row/Banner)或者业务组件里导出的变量,形成循环引用
  • 组件导出顺序错误,在组件/变量定义完成前就执行了默认导出
  • 同文件内混用CommonJS(module.exports/require)和ESM(import/export)模块语法,导致webpack解析导出顺序混乱
  • 自定义请求hook、状态逻辑存在跨文件循环引用
修复步骤

按优先级逐一排查处理:

  • 打断循环依赖链路
    逐个检查App.js、Banner.js、axios.js、Row.js的import语句,找到反向引用的代码:比如axios.js里如果引入了Row组件、Row里定义的常量/方法,把这部分逻辑拆分到独立的无依赖公共文件(比如公共常量放constants.js、公共请求方法放api.js),保证基础依赖文件(axios封装、工具函数)不反向依赖上层业务组件。
  • 修正组件导出写法
    检查Row.js的导出逻辑,必须保证组件、状态变量定义完成后再执行导出,不要提前导出:
    // ❌ 错误写法:提前导出触发初始化顺序异常
    export default Row;
    function Row() {
      const [list, setList] = useState([])
      // useEffect、fetchUrl相关逻辑
    }
    
    // ✅ 正确写法:先定义组件,最后导出
    function Row() {
      const [list, setList] = useState([])
      useEffect(() => {
        // fetchUrl请求逻辑
      }, [fetchUrl])
      // 其余组件逻辑
    }
    export default Row;
    
    同时统一全项目模块语法,不要在同一个文件内混用module.exports和import/export,全部使用ESM规范语法即可。
  • 规范axios封装逻辑
    axios.js作为基础请求层文件,只允许被上层业务文件引入,不能在其中引入任何业务组件、业务页面相关的代码。如果拦截器、请求配置里用到业务相关参数,把参数抽离到不依赖业务组件的独立配置文件后再引入。
  • 清理缓存重启服务
    代码修改完成后,删除项目下node_modules/.cache目录,重新执行启动命令(npm start/yarn start),清除webpack热更新的旧缓存,避免缓存导致的假报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:42:09