Node.js中MongoDB连接报错:语法错误排查求助
问题
我在Node.js环境中编写了MongoDB数据库连接代码,运行后出现语法错误。
代码如下:
var express = require('express') var mongoose = require('mongoose') var cors = require('cors') var morgan = require('morgan') require('dotenv').config() const app = express() //db mongoose.connect(process.env.DATABASE, { useNewUrlParser:true, useFindAndModify:true, useUnifiedTopology:false, useCreateIndex:true, }) .then(() => console.log('DB Connected')) .catch(err => console.log('DB Connection Error =>', err)) //middleware app.use(express.json({limit:'5mb'})) app.use(express.urlencoded({extended:'true'})) app.use(cors({ origin:["http://localhost:3000"] })) app.post("/api/register", (req, res) =>{ console.log("Register Endpoint =>", req.body); }) const port = process.env.PORT app.listen(port, () => console.log(`Server running on port ${port}`))
执行代码时出现如下报错:
C:\Users\atiqu\merncamp\server\node_modules\mongodb\lib\collection.js:70 pkFactory: db.options?.pkFactory ?? utils_1.DEFAULT_PK_FACTORY, ^ SyntaxError: Invalid or unexpected token at Module._extensions..js (node:internal/modules/cjs/loader:1300:10)
解决方法
这个错误并非你的代码问题,而是安装的mongodb驱动版本过高,而你的Node.js版本不支持它用到的**可选链操作符(?.)和空值合并操作符(??)**这两个ES2020语法特性。
你可以通过以下两种方式解决:
- 升级Node.js版本
- 终端运行
node -v查看当前版本,若版本低于14.0.0,直接升级到14.x或更高版本(推荐长期支持版如16.x、18.x),新版本原生支持这些语法。
- 终端运行
- 降级mongodb驱动版本
- 先卸载现有驱动:
npm uninstall mongodb - 安装兼容旧Node.js版本的驱动,比如3.x系列:
npm install mongodb@3.7.3
- 先卸载现有驱动:
另外补充一点:你的mongoose连接配置里useUnifiedTopology设为false并不推荐,建议改为true,这是MongoDB官方推荐的新拓扑引擎,稳定性更好。
内容的提问来源于stack exchange,提问作者atique zaman
相关产品推荐
相关产品推荐

