MERN Stack - Express 和 React 在同一端口上?

2024-03-05

我正在开发一个使用 MERN(MongoDB、Express、React、Node)堆栈的项目,在将数据从 React 组件内的表单发布到 Node.js 中定义的 API 端点时遇到问题。当我提交表单时,浏览器仅显示“无法发布”错误。我非常有信心,如果我为 React 中的表单提交创建一个事件处理程序,并使用 Axios 等库处理 POST,我就可以解决这个问题。

但最终我认为这个问题是因为 Node 后端运行在与 React 前端不同的端口上。有没有一种方法可以配置我的堆栈,以便我可以使用标准形式 POST 并可能让 FE 和 BE 在同一端口上运行?


我发现您正在运行未弹出的 CRA。这意味着当你跑步时npm run start从你的 create-react-app 文件夹中,你应该在默认端口 3000 上运行 React。

首先,我建议将服务器和客户端代码保存到带有单独的 package.json 文件的单独文件夹中

现在假设你有这段代码/server/index.js它直接来自快速示例,但路线以/api并且还将在端口上运行5000。这非常重要,您很快就会明白原因。

const express = require('express');
const app = express();

app.get('/api/hello', (req, res) => res.send('Hello World!'))

app.listen(5000, () => console.log('Example app listening on port 5000!'))

现在回到你的/client我假设您的 CRA 所在的文件夹,打开 package.json 并添加以下行:

"proxy": {
  "/api/*": {
    "target": "http://localhost:5000"
  }
},

现在尝试使用 axios 来调用服务器,例如:

const helloFromApi = 
  axios
    .get('/api/hello')
    .then(res => res.data);

希望能帮助到你

更新 10/21/2019

package.json 中的 proxy 字段必须是字符串

"proxy": "http://localhost:5000"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MERN Stack - Express 和 React 在同一端口上? 的相关文章

  • http模块和express模块​​有什么区别?

    我正在学习 NodeJs http www tutorialspoint com nodejs http www tutorialspoint com nodejs 我无法理解使用 http 模块 get post 方法 与使用expres
  • React 组件等待所需的 props 渲染

    我正在父组件内部声明一个组件 我想在一个文件中建立特定的道具 然后在父组件中 我希望能够同时为子组件建立其他道具 因为它们是共享属性 在大多数情况下 我的问题是 子组件尝试渲染并失败 因为首先没有建立所需的道具类型 有没有办法告诉子组件等待
  • Google API、drive.files.list 和仅返回子文件

    我正在使用 谷歌API https www npmjs com package googleapis NodeJS 中的库 我试图返回当前指定文件夹中的文件和文件夹列表 但我发现drive files list返回用户已被授予读取权限的所有
  • Nodejs Express 隐式中间件应用于所有路由?

    我想知道 Express 是否允许我创建一个默认调用的路由中间件 而无需我将其明确放置在 app get arg 列表中 NodeJS 新手 var data title blah So I want to include this in
  • 如何将 hls.js 与 React 结合使用

    我需要一些帮助来尝试弄清楚如何在 React 中使用 hls js 让我解释一下我必须从 api 获取 m3u8 的情况我能够使用基本的 html 使其工作
  • s3 中托管的静态网站:页面刷新后返回 404

    使用此存储桶策略 Version 2012 10 17 Statement Sid PublicReadGetObject Effect Allow Principal Action s3 GetObject Resource arn aw
  • 错误:找不到模块“jasmine-core”

    我安装了以下内容进行测试 devDependencies jasmine core 2 4 1 karma 0 13 22 karma jasmine 0 3 7 karma phantomjs launcher 1 0 0 运行后karm
  • NodeJS CPU 一次飙升至 100%

    我有一个用 NodeJS 编写的 SOCKS5 代理服务器 我正在使用原生net and dgram打开 TCP 和 UDP 套接字的库 它可以正常工作大约 2 天 所有 CPU 的最大利用率约为 30 两天没有重新启动后 一个 CPU 峰
  • Ant设计文件上传中使用customRequest

    我正在使用 Axios 来处理文件上传 我遇到显示文件上传进度的问题 我使用的文件上传视图是 图片卡 HTML
  • 使用 TFS 2015 运行 Jest 单元测试

    有人尝试将 jest 单元测试与 TFS 2015 集成吗 我尝试使用 Chutzpah 测试适配器 https visualstudiogallery msdn microsoft com f8741f04 bae4 4900 81c7
  • 以异步方式执行 Express res.render

    我有一个 Nodejs 应用程序 其中res renderExpress 方法以阻塞方式花费大约 400 毫秒 我如何处理它以非阻塞方式执行 我的 apache 基准测试需要 12 秒来执行大约 30 个并发请求 我如何以更好的方式实施这一
  • 在 Redis 上为 Django 和 Express.js 应用程序共享会话存储

    我想创建一个包含一些登录用户的 Django 应用程序 另一方面 由于我想要一些实时功能 所以我想使用 Express js 应用程序 现在的问题是 我不希望身份不明的用户访问 Express js 应用程序的日期 因此 我必须在 Expr
  • 计算两点之间的最短路线

    过去几周我一直在开发一款多人 HTML5 游戏 使用nodejs and websockets 我已经被这个问题困扰了一段时间 想象一下 我用数组实现了这个平铺地图 如下所示 1 or 棕色瓷砖 路上有障碍物 玩家无法通过 0 or 绿色瓷
  • 如何使用 React 获取查询字符串?

    我试图从网址获取 query 123 http localhost 3000 query 123 http localhost 3000 query 123 Tried App js const search this props loca
  • 如何使用 htaccess 将所有请求重定向到反应或角度索引?

    我正在使用react router 在react 中创建一个应用程序 早些时候 我对 Angular 做了同样的事情 但在这两种情况下 如果用户为 URL 添加书签并直接加载它 它将显示 404 错误 我们可以在 htaccess 中创建这
  • 动态更改温斯顿的日志级别

    我尝试在运行时实现日志级别更改 我一直在关注https github com yannvr Winston dynamic loglevel blob master test https github com yannvr Winston
  • 在 React 中使用 .less 文件

    我正在尝试将 less 文件与极简主义 React 应用程序一起使用 使用创建反应应用程序 我已经添加less and less loader to my 包 json以及我的模块规则webpack config js文件 然而 类引用并未
  • Nodemailer发送日历事件并将其添加到谷歌日历

    我正在尝试使用 nodemailer 将日历事件发送到 Gmail 帐户 这是我的代码 let transporter nodemailer createTransport host smtp gmail com port 587 secu
  • Node.js Express 4.0 中的 res.render 回调参数的用途是什么?

    目的是什么res render回调参数 在什么情况下 由于模板已被指定为第一个参数 因此人们会想要使用这样的回调参数 这是文档中的代码 send the rendered view to the client res render inde
  • Node 不断恢复到旧版本

    每次我在控制台中重新启动 vagrant 时 它都会询问我的登录详细信息 然后说Now using node v7 10 0 npm v4 2 0 当我做run nvm install node I get v13 11 0 is alre

随机推荐