反应路由器和 Express 冲突

2024-04-15

我有我想要 React Router 处理的路径,而且我还有一个 Express API 后端,我从 React 应用程序调用它来执行一些安全的 API 调用。

/#/- 希望在这里提供应用程序
/#/:id- 应用程序的唯一 URL,我使用 ID 从 React 调用某些快速端点。
*- 所有快速 REST 端点

Express app.js:

app.use(middleware);
app.use(require('webpack-hot-middleware')(compiler, {
  log: console.log
}));
app.use('/api', [router_invokeBhApi]);
app.get('/#/*', function response(req, res) {
  res.write(middleware.fileSystem.readFileSync(path.join(__dirname, 'dist/index.html')));
  res.end();
});
app.use(express.static(path.join(__dirname, '/dist')))

我的 React 路由器组件:

export default (
  <Route path="/" component={App}>
    <IndexRoute component={HomePage} />
    <Route path="/:id" component={ConsentForm} something="dope"/>
  </Route>
);

所以这就是发生的事情:
- 即将localhost:8000为应用程序提供服务HomePage成分
- 即将localhost:8000/#/还为该应用程序提供服务HomePage成分
- 即将localhost:8000/example给我Cannot GET /example这意味着快递正在运作
- 即将localhost:8000/api给了我一个从express发送的测试JSON对象,这是正确的。
- 即将localhost:8000/#/somehashcode仍然给我HomePage组件,当它应该给我ConsentForm成分。

我使用 React Dev 工具检查了 Router 组件:
- RouterContext 组件有一个名为的对象routes with a childRoutes在 - 的里面routes[0],并且它有路径/:id. routes[0]也有一条路/这告诉我 React Router 正确加载了所有路由?

如此迷茫...

我在其中渲染整个应用程序的 React 文件:

import 'babel-polyfill';

import React from 'react';
import ReactDOM from 'react-dom';
import { Router, browserHistory } from 'react-router';

import Routes from './shared/components/Routes';

import './shared/base.css';
import './shared/customInput.css';


const ROOT_ELEMENT = 'app';

ReactDOM.render((
  <Router history={browserHistory}>
    {Routes}
  </Router>
), document.getElementById(ROOT_ELEMENT));

我终于弄明白了!

在反应中Router组件改变:id路线:

<Route path="/redirect/:id" component={ConsentForm} something="dope"/>

在快递中,app.js将 React 服务更改为:

app.get('/redirect/*', function response(req, res) {
  res.write(middleware.fileSystem.readFileSync(path.join(__dirname, 'dist/index.html')));
  res.end();
});

从中学到了2件事:
- 在路线中使用# 不起作用。不知道为什么。
- 也在 React 端明确说明路由。

很奇怪,或者也许我失去了一些不成熟的知识。任何能为我指明正确方向的资源都会非常棒。

很肯定其他人在同时使用 Express 和 React 时也会遇到这种情况。

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

反应路由器和 Express 冲突 的相关文章

随机推荐

  • 枚举和字典<枚举,操作>

    我希望我能以每个人都清楚的方式解释我的问题 我们需要您对此的建议 我们有一个枚举类型 它定义了超过 15 个常量 我们收到来自 Web 服务的报告 并将其一列转换为此枚举类型 根据我们从该网络服务收到的信息 我们使用以下命令运行特定功能 字
  • 有什么例子可以说明了解 C 语言可以让我用任何其他语言编写更好的代码?

    在 Stack Overflow 播客中 Joel Spolsky 不断地抱怨 Jeff Atwood 不知道如何用 C 语言编写代码 他的说法是 了解 C 可以帮助你编写更好的代码 他还总是使用某种涉及字符串操作的故事 以及了解 C 如何
  • Azure 数据工厂 v2:活动执行管道输出

    有没有办法在活动 执行管道 中引用已执行管道的输出 即 主管道按顺序执行2个管道 第一个管道生成一个自己创建的 run id 需要将其作为参数转发到第二个管道 我已阅读文档并检查主管道是否记录了第一个管道的输出 但看起来这不可能直接实现 到
  • 断言:exportArchive:“Test.app”需要配置文件

    当我尝试在 Xcode9 中使用 Xcode 服务器集成持续集成时 我可以成功创建 BOT 并尝试集成 然后我总是收到类似的错误 断言 exportArchive Test app 需要配置文件 如何解决这个问题 我遇到了同样的问题 并按照
  • torch.mm、torch.matmul 和 torch.mul 有什么区别?

    阅读完 pytorch 文档后 我仍然需要帮助来理解之间的区别torch mm torch matmul and torch mul 由于我不完全理解它们 所以我无法简明地解释这一点 B torch tensor 1 1207 0 3137
  • Java 中保存最后 N 个元素的大小受限队列

    关于 Java 库的一个非常简单快速的问题 是否有一个现成的类可以实现Queue具有固定的最大大小 即它始终允许添加元素 但它会默默地删除头元素以为新添加的元素提供空间 当然 手动实现它很简单 import java util Linked
  • 如何检测 highcharts 中的缩放事件?

    是否可以检测 Highcharts 中的缩放事件 我的用例是 我有一些图表外部的状态 当用户放大其中的一部分时 我想检测 x 轴上的新时间范围并更新相应的外部状态 你有没有尝试过高图表API http api highcharts com
  • 需要帮助解决 sorl-thumbnail 错误:“‘thumbnail’不是有效的标签库:”

    我一直在绞尽脑汁试图解决这个问题 我已经尝试了一切 但我没有任何想法 我不断看到这个错误 异常值 thumbnail 不是有效的标签库 无法从 django templatetags thumbnail 加载模板库 没有名为 sorl th
  • std::initializer_list 和引用类型

    Can a std initializer list包含引用类型 右值和左值 或者是否必须使用指针或引用包装器 例如std ref EDIT 也许需要更多澄清 我有一个成员变量 std vector
  • R 中的 Unicode 下标

    我想写 sigma 2 i使用 unicode 我可以得到三分之二的方法 u03C3 U00B2 我一生都无法弄清楚如何添加下标 根据在这个网站上我得到了上标 2 的 unicode http www fileformat info inf
  • Silex - app->json() 以字符串形式返回整数数据

    我刚刚开始使用 Silex 来帮助我构建一个从 MySQL 数据库返回数据的 Restful API 以前在使用 php 和 mysql 时 我注意到 MySQL 会在我的文件中将整数作为字符串返回json encode 功能 它会在我的所
  • iTunes Connect 上的销售统计数据多久更新一次? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的应用程序今天被 Apple 接受 我正在尝试计算它已被下载了多少次 有谁知道 iTunes Con
  • npm install git+ssh 在 docker (node16) 中失败

    谁能解释一下为什么要从node 14 alpine to node 16 alpine会导致npm安装失败吗 gt 8 10 RUN mount type ssh npm i 14 14 27 npm ERR code 128 14 14
  • InProc 会话数据消失

    我大约一周前才注意到这一点 我正在存储有关用户正在玩的当前谜题的数据 www wikipediamaze com 如下所示 HttpContext Current Session Add puzzleInfo currentPuzzleIn
  • 使用 jQuery 将宽度设置为百分比

    如何使用 jQuery 将 div 的宽度设置为百分比 使用width http api jquery com width 功能 div somediv width 70 将转向 div div into div style width 7
  • 如何将CUDA时钟周期转换为毫秒?

    我想用一些代码来测量时间within我的内核需要 我已经关注了这个问题 https stackoverflow com questions 11209228 timing different sections in cuda kernel连
  • 如何将图像从黑色转换为白色,反之亦然

    我有一张黑白的 jpg 图片 我想将黑色部分转换为白色 将白色部分转换为黑色 黑色像素转换为白色 反之亦然 MATLAB并再次另存为jpg文件 我已经尝试过这段代码 但它只是在白页上给了我一条黑线 im imread Export00000
  • JPA/Hibernate + HQL/JPQL:选择带有 BigDecimal 参数的 DTO

    我们使用 JPA 和 hibernate 作为实现 假设我有以下 DTO public class SupplierInfoDto private String supplierName private BigDecimal remaini
  • iOS 11 SceneKit hitTest:选项:失败

    我在 iOS 11 上的 SceneKit 中使用 hitTest options 时遇到了困难 在地图应用程序中 我有一个地形节点 使用 hitTest options 我能够长时间通过触摸屏幕来发现地形上的一个点 它仍然可以在 iOS
  • 反应路由器和 Express 冲突

    我有我想要 React Router 处理的路径 而且我还有一个 Express API 后端 我从 React 应用程序调用它来执行一些安全的 API 调用 希望在这里提供应用程序 id 应用程序的唯一 URL 我使用 ID 从 Reac