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

Node.js Babel编译报错:Cannot read properties of undefined (reading 'default')

解决Babel转译时模块变量初始化晚于引用的问题

你遇到的是Babel转译ES6模块到ES5时,模块变量初始化顺序异常导致的报错,以下是几种可行的解决办法:

  • 调整Babel的模块转换配置
    如果你用@babel/preset-env,确保将modules选项设置为"commonjs",这会让Babel按照CommonJS规范转译模块,避免变量初始化顺序混乱。示例配置:

    {
      "presets": [
        ["@babel/preset-env", {
          "modules": "commonjs"
        }]
      ]
    }
    

    注意不要把modules设为"false"或者其他非CommonJS的模式,否则可能触发转译逻辑的bug。

  • 修改模块导出导入的写法
    把默认导出改为命名导出,能让转译后的变量逻辑更清晰,避免default属性读取错误:
    // src/user.model
    export const User = mongoose.model('User', userSchema);
    // src/index.js
    import { User } from "./user.model";
    export { User };

  • 排查循环依赖
    循环依赖是这类问题的常见诱因,检查项目中是否存在A模块导入B、B模块又导入A的情况,重构代码消除循环依赖,就能解决变量初始化顺序的问题。

  • 更新Babel依赖版本
    旧版本的Babel核心包或预设可能存在模块转译的bug,把@babel/core、@babel/preset-env等依赖更新到最新稳定版,大概率能修复这类初始化顺序异常的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:01:21