导入Mongoose致执行中断,出现Unexpected token '?'语法错误
解决导入Mongoose时出现的SyntaxError问题
问题根源
报错中的??是空值合并运算符,属于ES2020语法特性,你当前使用的Node.js版本不支持该语法。而你安装的Mongoose依赖的mongodb驱动已使用该特性,因此仅导入Mongoose就会触发错误。
解决方案
方案1:升级Node.js版本
- 先运行
node -v查看当前Node.js版本,升级到支持ES2020的版本(推荐Node.js 14.0.0+,更建议直接安装LTS版本如20.x) - 完成版本升级后,执行以下步骤清理并重装依赖:
- 删除项目目录下的
node_modules文件夹 - 删除
package-lock.json(若使用yarn则删除yarn.lock) - 运行
npm install重新安装所有依赖
- 删除项目目录下的
方案2:降级Mongoose到兼容版本
如果无法升级Node.js,根据你的Node.js版本选择对应兼容的Mongoose版本:
- Node.js 12.x:执行
npm install mongoose@6安装Mongoose 6.x版本 - Node.js 10.x:执行
npm install mongoose@5安装Mongoose 5.x版本 - 安装完成后重新启动项目即可
内容的提问来源于stack exchange,提问作者Gaspar Liboreiro
相关产品推荐
相关产品推荐

