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

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语法特性。

你可以通过以下两种方式解决:

  1. 升级Node.js版本
    • 终端运行node -v查看当前版本,若版本低于14.0.0,直接升级到14.x或更高版本(推荐长期支持版如16.x、18.x),新版本原生支持这些语法。
  2. 降级mongodb驱动版本
    • 先卸载现有驱动:npm uninstall mongodb
    • 安装兼容旧Node.js版本的驱动,比如3.x系列:npm install mongodb@3.7.3

另外补充一点:你的mongoose连接配置里useUnifiedTopology设为false并不推荐,建议改为true,这是MongoDB官方推荐的新拓扑引擎,稳定性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:10:21