为 React 应用程序创建一个简单的 Express 服务器(Node.js)

为 React 应用程序创建一个简单的 Express 服务器(Node.js)

— 您可能遇到的问题

千里之行始于脚下 — A thousand miles begins with a single step

一直想写一篇关于这个话题的文章,终于有时间了,这不是关于什么是 Node 什么是 Express ,我假设你已经安装了 Node.js 和 NPM。

Node.js 是一个开源、跨平台的运行时环境,允许开发人员使用 JavaScript 创建各种服务器端工具和应用程序。

Express 是最流行的 Node Web 框架,并且是许多其他流行的 Node Web 框架的底层库。

话不多说,让我们开始吧!

创建反应应用程序

首先,创建一个包含我们的 React 应用程序的目录,从终端导航到该目录并运行:

npx creat-react-app express-server-for-react

  • 我命名了这个应用程序 express-server-for-react

如果你之前通过 npm install -g create-react-app 全局安装了 create-react-app,我建议你使用卸载包 npm 卸载 -g create-react-app 或者 yarn 全局删除 create-react-app 为了保证 npx 始终使用最新版本。

(* 如果您对包管理器感觉更好 ,只需先安装它)

之后,与 npm 开始 或者 纱线开始 ,我们的初始反应应用程序应该开始 http://localhost:3000/

http://localhost:3000/

那很简单! ⚡️

现在让我们设置 Node.js Express 服务器

  1. 创建一个 服务器.js 应用程序目录中的文件,这是我们将创建 Express 服务器的位置

App structure

2.安装 表达 和: npm install express - 保存 或者 纱线添加快递 , 你可以在里面看到 包.json 作为依赖

3.更新 服务器.js 包含以下代码的文件:

Create Express server within server.js

  • 上面的代码首先需要 express 并允许我们使用它,然后我们设置我们的服务器将运行的端口(端口: 5000 ), *如果服务器运行良好,我们应该看到“ 控制台日志 ” 终端中的消息。
  • 这 ” 应用程序.get(…) ” 行设 得到 将从我们的 React 应用程序前端获取的请求路由(“ /谁在那儿 ”),如果一切正常,我们应该稍后在我们的 React 应用程序中接收那些发送的数据: 一个字符串消息(“ 你好,我是来自 Express 后端的 LOLA ”)和我的小狗图像路径(定义为“ 图像路径 ”)。

好吧,让我们启动服务器,看看会发生什么!

在终端运行中:

**节点服务器.js**

如果一切正常,恭喜!您可以忽略以下步骤,但在这里我收到了我的第一个错误:

错误:监听 EADDRINUSE:地址已在使用 :::5000

我认为这是我们可能经常遇到的普遍问题,这是因为当我们尝试重新启动 Node.js 应用程序时,之前的应用程序没有正常关闭,我们需要 手动终止进程 .

➡️ 首先,找出哪个进程正在使用端口 5000,在终端中运行以下命令:

**_须藤 lsof -i :5000_**
  • 这将列出所有 PID 监听这个端口,一旦你有了 PID, 您可以使用以下方法终止它:

    杀死 -9 {PID} *使用 -9 选项确保进程立即终止

➡️ 但是在我的情况下,由于某种原因 macOS 进程一直在自动生成,运行这个命令应该可以修复它:

**_pkill 控制中心;数控-l 5000_**
  • 这将杀死 ControlCenter 进程,然后启动一个空的 Netcat TCP 服务器,侦听 ControlCenter 正在使用的确切端口,因为 ControlCenter 在退出时会自动重新启动,所以当它启动时,它会检测到它的端口正在使用中。

服务器工作后,我们应该在终端控制台中看到这条消息:“ 应用程序监听 5000 端口 ”这是在我们的 服务器.js .

现在去 http://localhost:5000/whoisthere ,我们应该看到:

server is running on port 5000

到目前为止,我们已经完成了将近 70%!

从 React 应用程序获取服务器数据

首先,导航到文件 应用程序.js ,在其中创建一个获取请求,如下所示:

fetch express server data

修改 App.js 文件:

fetch data from server and render them in frontend

代码看起来不错,我期待在下面看到这个最终结果:

final result

但是不,什么都没有显示!我的第二个问题来了,看看控制台,错误打印如下:

CORS

为什么?因为出于安全原因,fetch API 遵循同源策略。这意味着使用 fetch API 的 Web 应用程序只能从加载应用程序的同一源请求资源,除非来自其他源的响应包含权限 CORS 标题。

在我们的例子中,本地主机: 3000 和本地主机: 5000 是两个独立的域,所以我们还不能跨它们发出请求。

最简单的解决方案:安装 CORS 库 并告诉服务器期待来自 localhost:3000 的请求,所以我们可以安装它:

**纱线加芯**

*这种方法非常简单,也可以在 package.json 中添加一个简单的代理,例如:“proxy”:“http://localhost:5000

现在,最后一步,更新 服务器.js ,在下面添加:

_常量_ cors = 要求(“cors”); 应用程序使用( 科尔斯({ 来源:'http://localhost:3000', }), );

就是这样!我们创建的简单 React 应用程序连接到我们的 Node.js Express 服务器,并使用漂亮的小狗图像将获取的数据呈现给前端。

这只是一个简单的示例应用程序,我们可以用 Node.js 做很多事情,让我们每天继续学习!如果您也对我的其他文章感兴趣,这里有一些链接,谢谢您的时间!

[

使用 React Context 将状态从子更新到父

— React Context 提供了一种通过组件树传递数据的方法,而无需在…

媒体网

](https://medium.com/geekculture/update-parent-state-from-child-component-with-react-context-api-a56cf3742428)

[

使用会话存储在 React 组件中保持状态

sessionStorage 中的数据在页面会话结束时被清除。

javascript.plainenglish.io

](https://javascript.plainenglish.io/use-session-storage-to-persist-state-within-a-react-component-206867ef2269)

[

边做边学——使用 Gatsby 创建您的第一个站点

婴儿步,是的。

javascript.plainenglish.io

](https://javascript.plainenglish.io/learn-by-doing-use-gatsby-to-create-your-first-site-af7bfb7a8a6f)

[

使用 gatsby-source-filesystem 和 GraphQL 获取 JSON 数据

学习盖茨比第 2 步

javascript.plainenglish.io

](https://javascript.plainenglish.io/sourcing-json-data-with-gatsby-source-filesystem-and-graphql-6fc7cef2a49e)

[

5 个你可以使用的 React Hook 库

一个小辈的建议——试一试。

javascript.plainenglish.io

](https://javascript.plainenglish.io/5-react-hook-libraries-you-could-use-d7f13066ebba)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/11094/54180209

posted @ 2022-09-02 09:55  哈哈哈来了啊啊啊  阅读(336)  评论(0编辑  收藏  举报