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

Windows7下Node.js连接mongoose与MongoDB云库报No valid exports main错误如何解决

问题根因

你当前安装的mongoose@6.x版本依赖的MongoDB Node.js驱动v4+,使用了ECMAScript模块的exports字段定义包入口,这个特性仅在Node.js v12.20.0 / v14.13.0及以上版本支持。而Windows7系统最高仅支持到Node.js v13.x,无法适配新版本驱动的模块规则,因此触发模块找不到的报错。你之前降级操作未生效大概率是没有降级到兼容的大版本区间。

解决步骤
  • 第一步:卸载当前不兼容的依赖包
    执行命令:
    npm uninstall mongoose mongodb
  • 第二步:安装适配Win7/低版本Node的稳定依赖
    选择mongoose 5.x的最新LTS版本,该版本最低仅要求Node.js 10,完全兼容Win7可运行的所有Node版本,执行命令:
    npm install mongoose@5.13.20
  • 第三步:调整本地数据库连接代码适配旧版本规则
    修改后的代码如下:
const mongoose = require('mongoose');

module.exports = async () => {
    try{
        await mongoose.connect(process.env.DB_URL, {
            useNewUrlParser: true,
            useUnifiedTopology: true
        });
        console.log("Database connected");
    }catch(error)
    {
        console.log("error: ", error);
        throw new Error(error);
    }
}
  • 第四步:如需使用MongoDB云连接,额外安装兼容版本的原生驱动
    执行命令:
    npm install mongodb@3.7.4
    修改后的云连接代码如下:
const { MongoClient } = require('mongodb');
const uri = "mongodb+srv://user1:<你的密码>@cluster0.vl2la.mongodb.net/myFirstDatabase?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
client.connect(err => {
  if(err) {
    console.log('连接错误', err)
    return
  }
  const collection = client.db("test").collection("devices");
  // 执行你需要的数据库操作
  client.close();
});
  • 第五步:删除项目根目录下的package-lock.json文件和node_modules文件夹,重新执行npm install安装所有依赖,之后启动项目即可。
验证方式

执行npm run dev启动项目,控制台打印Database connected且无报错即为问题解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:57:04