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

Node.js v18升级后MongoDB模块未找到错误及警告修复咨询

Node.js 16升18后MongoDB模块错误与警告解决指南

问题背景

把Node.js版本从16升级到18后,碰到了MongoDB相关模块找不到的错误,还有循环依赖的警告。项目的package.json配置如下:

{
  "dependencies": {
    "@7eleven/7boss-logger": "^1.2.2",
    "@7eleven/7boss-mongo-util": "^2.5.0",
    "@7eleven/7boss-objects": "^2.0.3",
    "@babel/polyfill": "^7.12.1",
    "aws-sdk": "^2.1506.0",
    "joi": "^17.11.0",
    "lambda-api": "^0.10.7",
    "moment": "^2.29.4",
    "mongodb": "^6.3.0",
    "npm-run-all": "^4.1.5"
  },
  "devDependencies": {
    "@babel/cli": "^7.23.4",
    "@babel/core": "^7.23.3",
    "@babel/preset-env": "^7.23.3",
    "aws-sam-webpack-plugin": "^0.6.0",
    "babel-loader": "^8.3.0",
    "clean-webpack-plugin": "^4.0.0",
    "eslint": "^8.54.0",
    "eslint-config-prettier": "^8.10.0",
    "eslint-plugin-prettier": "^4.2.1",
    "prettier": "^2.8.8",
    "serverless": "^3.38.0",
    "serverless-domain-manager": "^6.4.4",
    "serverless-offline": "^13.3.0",
    "serverless-webpack": "^5.13.0",
    "webpack": "^5.89.0",
    "webpack-cli": "^4.10.0"
  }
}

收到的警告信息:

(node:xxxx) Warning: Accessing non-existent property 'MongoError' of module exports inside circular dependency

解决步骤

1. 清缓存重装依赖

先彻底清理现有依赖和缓存,避免版本冲突:

  • 删除node_modules文件夹:Mac/Linux用rm -rf node_modules,Windows用rmdir /s /q node_modules
  • 删除package-lock.json文件
  • 重新安装依赖:npm install

2. 升级第三方Mongo工具包

你用的@7eleven/7boss-mongo-util是2.5.0版本,这个包可能依赖旧版MongoDB驱动,跟Node18不兼容:

  • 查一下这个包的更新记录,看看有没有支持Node18的版本,直接升到最新兼容版:npm install @7eleven/7boss-mongo-util@latest
  • 如果这个包没更新,就得看它依赖的MongoDB相关模块,可能要手动补装缺失的依赖,但优先升级工具包比补旧依赖靠谱。

3. 适配MongoDB驱动版本(可选)

当前用的mongodb6.3.0是支持Node18的,但如果第三方工具包只认低版本驱动,可以试着把mongodb降到5.x系列,但还是优先升级工具包,别轻易降级驱动。

4. 调整Babel和Webpack配置适配Node18

Node18对ES模块和CommonJS的解析更严格,还要确保编译配置跟上:

  • 把@babel/preset-env的目标版本改成Node18,在.babelrc或项目的babel配置里修改:
    {
      "presets": [
        ["@babel/preset-env", {
          "targets": {
            "node": "18"
          }
        }]
      ]
    }
    
  • 确认serverless-webpack和babel-loader的版本适配Node18,要是版本太旧也升个级。

5. 处理循环依赖警告

截图里的循环依赖警告大多是旧版Mongo包的问题,升级完相关包基本就没了。要是还能看到,要么忽略(不影响功能),要么启动项目时加参数屏蔽:
node --no-warnings 你的入口文件.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:39:55