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

已安装MongoDB Node.js驱动,require/import相关报错如何解决?

解决Node.js中MongoDB驱动的require/import错误

你的代码:

const { MongoClient } = require("mongodb")
const url='mongodb://localhost:27017'
const client=new MongoClient(url);
async function getdata(){
    let result=await client.connect();
    let db=result.db("first")
    let collection=db.collection("c1");
    let res=await collection.find({}).toArray()
    console.log(collection.find({}).toArray())
}
getdata()

遇到的两类错误:

  • monodb.js:2 Uncaught ReferenceError: require is not defined at monodb.js:2:25
  • monodb.js:1 Uncaught SyntaxError: Cannot use import statement outside a module (at monodb.js:1:1)

错误原因

  • 第一个错误:代码要么在浏览器环境运行(浏览器不支持CommonJS的require),要么Node.js被设置为ES模块模式(此时require不可用)。
  • 第二个错误:改用import语法时,未将文件标记为ES模块,Node.js默认使用CommonJS规范,因此报错。

解决方案

方案1:保持CommonJS规范(继续用require)

  1. 检查项目根目录的package.json,如果存在"type": "module"字段,直接删除。
  2. 用Node.js命令行执行代码:
node monodb.js

(注意确认文件名拼写与实际一致,错误信息中显示的是monodb.js)

方案2:切换为ES模块规范(使用import)

  1. 修改代码为import语法:
import { MongoClient } from "mongodb";
const url='mongodb://localhost:27017';
const client=new MongoClient(url);
async function getdata(){
    let result=await client.connect();
    let db=result.db("first");
    let collection=db.collection("c1");
    let res=await collection.find({}).toArray();
    console.log(res); // 此处打印已await的res,而非未处理的Promise
}
getdata();
  1. 在项目根目录的package.json中添加字段:
{
  "type": "module"
}
  1. 同样用Node.js命令执行:
node monodb.js

额外提示

你原代码中console.log(collection.find({}).toArray())未添加await,会打印Promise对象而非实际查询结果,建议改为打印res变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:35:14