已安装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:25monodb.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)
- 检查项目根目录的
package.json,如果存在"type": "module"字段,直接删除。 - 用Node.js命令行执行代码:
node monodb.js
(注意确认文件名拼写与实际一致,错误信息中显示的是monodb.js)
方案2:切换为ES模块规范(使用import)
- 修改代码为
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();
- 在项目根目录的
package.json中添加字段:
{ "type": "module" }
- 同样用Node.js命令执行:
node monodb.js
额外提示
你原代码中console.log(collection.find({}).toArray())未添加await,会打印Promise对象而非实际查询结果,建议改为打印res变量。
内容的提问来源于stack exchange,提问作者mm m
相关产品推荐
相关产品推荐

