找不到module:错误:使用 MongoDB 时无法解析“dns”

IT技术 javascript node.js mongodb reactjs
2021-05-12 18:53:15

我是 Reactjs、Nodejs 和 MongoDB 的新手。我目前正在尝试更改 Mediums 雪花工具以将用户分数存储在数据库中。我已经通过 npm 安装了 yarn、mongodb 和 mongodb-core。这是一个单页 Web 应用程序,我认为这给我带来了麻烦。我加

var MongoClient = require('mongodb');

SnowflakeApp.js并遇到以下错误:

找不到module:错误:无法解析“/home/mlAHO174/snowflake/node_modules/mongodb-core/lib”中的“dns”

我试过在谷歌上搜索这个错误,发现它可能是一系列的事情。我不确定是因为 React 是前端而我正在尝试更改后端还是因为 mongoDB 安装不正确。我是新手,因此将不胜感激!

4个回答

DNS 是 Node.JS 的核心module。告诉人们他们需要通过 NPM 安装 DNS 最终会让他们拥有一个完全不同的module来做其他事情。

https://nodejs.org/api/dns.htmlhttps://www.npmjs.com/package/dns

此错误很可能意味着您正在尝试从客户端执行需要在服务器端完成的操作。如果 MongoDB module找不到 DNS 组件,则它在客户端运行。

MongoDB 必须在服务器上运行。为了从 React 动态访问数据,您需要使用 Express 或 Apollo 之类的东西设置 API。

更新:一个很好的方法是使用 Azure Functions (TypeScript) 或 AWS (Lambda) 函数

我通过为代码的客户端部分安装和使用 'bson' 而不是 'mongodb' 解决了这个问题。'bson' 有一点点 'mongodb' 的东西,它可能有你正在寻找的东西。'bson' 是为浏览器构建的。

在我的情况下,我需要浏览器中的“ObjectId”并将其从“bson”中拉入,因为我不想引用“mongodb”,因为 OP 中描述了错误。

其他答案也是正确的,具体取决于您收到此错误的原因。

问题是您正在尝试从前端连接到数据库。如果这是可能的,那将打开整个安全问题的世界。您需要在后端设置数据库连接,然后让前端向后端发出请求以处理数据库。

对于在导入 clientPromise 时遇到此错误的任何人(如在 with-mongodb 模板中):

确保您在 /pages/ 目录中!

不会在 /components 等其他目录中工作

(你应该休息一下或喝点咖啡......)