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
相关产品推荐
相关产品推荐

