MongoDB中this.options = options ?? {};连接报错,同代码其他项目正常求解决
问题解决思路
为什么会报错?
你用的??是空值合并运算符,属于ES2020的新语法。当前MongoDB连接的项目运行环境(Node.js版本、编译工具配置)不支持这个语法,而其他能正常运行的项目环境已经兼容ES2020,所以出现差异。
具体解决办法
方法一:换成兼容旧环境的写法
直接把代码改成ES2020之前支持的逻辑:
// 精准判断null/undefined,保留0、空字符串等合法假值 this.options = (options !== null && options !== undefined) ? options : {}; // 如果不需要区分假值,也可以用更简洁的写法 this.options = options || {};
方法二:升级/配置环境支持新语法
- Node.js项目:把Node.js版本升级到14.0.0及以上(这个版本开始原生支持
??运算符)。 - 用Babel编译的项目:安装
@babel/plugin-proposal-nullish-coalescing-operator插件,在Babel配置文件里启用它,让编译器自动把新语法转成旧环境能识别的代码。 - 前端构建项目:检查webpack、vite等工具的
target配置,把目标环境设置为支持ES2020的版本,或者添加相应的转译插件。
方法三:对齐正常项目的配置
对比能正常运行的项目,检查以下内容:
- Node.js版本号
- Babel/TypeScript的配置文件(比如
.babelrc、tsconfig.json) - 构建工具的环境目标设置
把当前项目的配置调整成和正常项目一致,问题就能解决。
内容的提问来源于stack exchange,提问作者Mohamed Ahmed
相关产品推荐
相关产品推荐

