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

如何解决Node.js应用中的BSONVersionError(需使用BSON 5.x.x)

问题描述

我的Node.js应用中出现了BSONVersionError,错误提示为“Unsupported BSON version, bson types must be from bson 5.x.x”,我认为这与MongoDB Node.js驱动或其他使用BSON的库有关。

详细信息

  • 已检查依赖,当前使用的MongoDB Node.js驱动版本为[你的版本]。
  • 已尝试通过npm install mongodb@5.x.x将MongoDB Node.js驱动更新至5.x.x版本。
  • 应用对接的MongoDB服务器版本为5.9.2

代码片段

dbClientObj.collection(CollectionName).findOne({_id: new ObjectId(employeeId)})

(注:原代码存在语法错误,已修正多余的_id:)

错误堆栈跟踪

BSONVersionError: Unsupported BSON version, bson types must be from bson 5.x.x
at serializeInto (D:\beyond-carts\PhoenixMind\SubscriptionService\node_modules\mongodb\node_modules\bson\lib\bson.cjs:3670:23)
at ...(原堆栈缺失部分保留)
at Msg.toBin (D:\beyond-carts\PhoenixMind\SubscriptionService\node_modules\mongodb\lib\cmap\commands.js:366:29)
at MessageStream.writeCommand (D:\beyond-carts\PhoenixMind\SubscriptionService\node_modules\mongodb\lib\cmap\message_stream.js:43:34)
at write (D:\beyond-carts\PhoenixMind\SubscriptionService\node_modules\mongodb\lib\cmap\connection.js:479:30)
at Connection.command (D:\beyond-carts\PhoenixMind\SubscriptionService\node_modules\mongodb\lib\cmap\connection.js:312:13)

环境信息

  • Node.js版本:18
  • MongoDB服务器版本:5.9.2

已尝试方案

尝试过直接使用bson包,例如new BSON.ObjectId(<employee_id>)

问题

如何解决BSONVersionError并确保我的应用使用5.x.x版本的BSON类型?


解决方案

1. 统一BSON依赖版本

错误核心是项目中存在多版本BSON库,或手动引入的bson包与MongoDB驱动内置BSON版本不匹配。

  • 删除node_modules和锁文件:
rm -rf node_modules package-lock.json
  • 重新安装指定版本的MongoDB驱动:
npm install mongodb@5.x.x
  • 不要单独安装bson包,直接用MongoDB驱动内置的BSON类型,保证版本完全一致。

2. 正确引入ObjectId

从MongoDB驱动中导出ObjectId,而非单独的bson包:

// CommonJS写法
const { MongoClient, ObjectId } = require('mongodb');
// ES模块写法
import { MongoClient, ObjectId } from 'mongodb';

// 使用示例
dbClientObj.collection(CollectionName).findOne({ _id: new ObjectId(employeeId) });

3. 排查依赖冲突

用命令查看项目中所有BSON版本:

npm ls bson

若发现其他依赖引入了不同版本的BSON,可在package.json中添加resolutions强制统一版本(npm 8+支持):

{
  "resolutions": {
    "bson": "^5.9.2"
  }
}

添加后重新执行npm install。

4. 验证版本一致性

安装完成后,打印驱动内置BSON版本确认:

const { BSON } = require('mongodb');
console.log('BSON版本:', BSON.version);

输出应为5.x.x系列版本,比如5.9.2。

内容的提问来源于stack exchange,提问作者karthik Rao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:42:40