我可能在这里遗漏了一些非常明显的东西,但是在尝试使用新创建的React应用程序中的Postgres时,我一直收到以下错误
Module not found: Can't resolve 'dns' in '/Users/tarek/test/node_modules/pg/lib'
以下是重现的步骤:
npm install pg --save
添加Postgres模块const { Client } = require('pg');
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"
}
}
问题是React应用程序是在浏览器中运行的,浏览器无法直接访问数据库。即使你确实找到了这样做的方法,它也只能在本地工作而不能在生产中工作。请注意,如果数据库在您的计算机上并且您的应用程序在Internet上可用,则远程用户无法以您描述的方式访问计算机上的数据。
为了使用带有React的数据库,您需要设置一个服务器 - 可能用Node编写(使用Express) - 它将为您的应用程序和数据提供服务。
服务器接收来自不同用户的请求,并使用适当的资源进行响应。例如,如果他们访问您的网站(例如example.com),您的服务器应该使用index.html响应您的项目(在这种情况下,它将是您的React应用程序的index.html)。然后,要从数据库中获取数据,您可以使用example.com/api/model/1
等路由设置api,以便您的反应应用程序可以从您的服务器请求具有id model
的1
实例,该实例将从数据库中获取并将其发送到React应用程序。
查看MERN(Mongo Express React Node)堆栈,了解有关所有这些如何协同工作的更多详细信息。即使使用Postgres,这个过程也与Mongo几乎相同。