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

运行Express服务时报MongoClient已重复声明SyntaxError求助

问题解决方法

报错原因

报错信息SyntaxError: Identifier 'MongoClient' has already been declared指向的是变量重复声明问题,你的代码存在两处对MongoClient的声明:

  • 第二行通过命名导入已经从mongodb包中引入了MongoClient:import mongodb, { MongoClient } from 'mongodb';
  • 第五行又通过const关键字重复声明了同名变量:const MongoClient = mongodb.MongoClient;
    二者冲突触发了语法错误,导致服务无法启动。

解决方案

两种方案任选其一即可:

方案1:删除重复的声明行

直接删掉第五行的const MongoClient = mongodb.MongoClient;,已完成的命名导入可以直接使用,无需重复取值。
修改后完整代码:

import app from './server';
import mongodb, { MongoClient } from 'mongodb';
import dotenv from 'dotenv';
dotenv.config();
const port = process.env.PORT || 8000;

MongoClient.connect(process.env.RESTREVIEWS_DB_URI, {
  maxPoolSize: 50,
  wtimeoutMS: 2500,
  useNewUrlParser: true,
})
  .catch((err) => {
    console.error(err.stack);
    process.exit(1);
  })
  .then(async (client) => {
    app.listen(port, () => {
      console.log(`listening on port ${port}`);
    });
  });

方案2:去掉命名导入的MongoClient

如果不需要单独做命名导入,把第二行的{ MongoClient }移除即可,保留从默认导出对象中取值的逻辑。
修改后第二行代码:

import mongodb from 'mongodb';

其余代码无需改动。

修改完成后重新启动服务即可正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:54:05