使用Postgres与新创建的React应用程序时出错:找不到模块:无法解析'dns'

问题描述 投票:0回答:1

我可能在这里遗漏了一些非常明显的东西,但是在尝试使用新创建的React应用程序中的Postgres时,我一直收到以下错误

Module not found: Can't resolve 'dns' in '/Users/tarek/test/node_modules/pg/lib'

以下是重现的步骤:

  1. 使用create-react-app创建一个新的React应用程序
  2. 使用npm install pg --save添加Postgres模块
  3. 将以下行添加到App.js:const { Client } = require('pg');
  4. 输入npm run start,你会得到上述错误。

我在这里错过了什么?

**节点版本:v8.12.0

** package.json

{
  "name": "test",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "pg": "^7.4.3",
    "react": "^16.5.1",
    "react-dom": "^16.5.1",
    "react-scripts": "1.1.5"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}
node.js reactjs postgresql
1个回答
3
投票

问题是React应用程序是在浏览器中运行的,浏览器无法直接访问数据库。即使你确实找到了这样做的方法,它也只能在本地工作而不能在生产中工作。请注意,如果数据库在您的计算机上并且您的应用程序在Internet上可用,则远程用户无法以您描述的方式访问计算机上的数据。

为了使用带有React的数据库,您需要设置一个服务器 - 可能用Node编写(使用Express) - 它将为您的应用程序和数据提供服务。

服务器接收来自不同用户的请求,并使用适当的资源进行响应。例如,如果他们访问您的网站(例如example.com),您的服务器应该使用index.html响应您的项目(在这种情况下,它将是您的React应用程序的index.html)。然后,要从数据库中获取数据,您可以使用example.com/api/model/1等路由设置api,以便您的反应应用程序可以从您的服务器请求具有id model1实例,该实例将从数据库中获取并将其发送到React应用程序。

查看MERN(Mongo Express React Node)堆栈,了解有关所有这些如何协同工作的更多详细信息。即使使用Postgres,这个过程也与Mongo几乎相同。

© www.soinside.com 2019 - 2024. All rights reserved.