为什么嵌套路由(react-router)不能与 nginx 容器 docker build 一起使用

2024-01-07

我想将我的项目部署到生产中,不幸的是我有一个搅拌机问题react-router嵌套路由器方法 我已经尝试解决这个问题 3 小时了,但我能弄清楚。 我不完全擅长 docker 和 nginx 配置

当我在开发中运行该项目时,它工作正常,甚至在正常构建下也是如此。毕竟我注意到了调试方法,我让知道问题不仅仅出现在反应路由器中容器配置.

Note:上次生产构建使用相同的路由方法运行良好,我没有更改任何内容。

默认配置文件

server {
  listen 3000;
  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
    expires -1; # Set it to different value depending on your standard requirements
  }
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
    root   /usr/share/nginx/html;
  }
}

Dockerfile

FROM node:14-alpine as react-build

# => Run container
FROM nginx:1.15.2-alpine
ENV NODE_ENV production
 

COPY package.json /home/node/app
RUN npm install

COPY . /home/node/app
RUN npm run build

# Nginx config
RUN rm -rf /etc/nginx/conf.d
COPY conf /etc/nginx

# Static build
COPY --from=react-build /home/node/app/build /usr/share/nginx/html

# Default port exposure
EXPOSE 3000

# Copy .env file and shell script to container
WORKDIR /usr/share/nginx/html
COPY ./env.sh .
COPY .env .
COPY .env.local .

# Add bash
RUN apk add --no-cache bash

# Make our shell script executable
RUN chmod +x env.sh

#Stream Editor CR LF
RUN sed -i -e 's/\r$//' /usr/share/nginx/html/env.sh

# Start Nginx server
CMD ["/bin/bash", "-c", "/usr/share/nginx/html/env.sh && nginx -g \"daemon off;\""]

这是路由文件树

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { BrowserRouter } from 'react-router-dom';
import { Provider } from 'react-redux';
import store from './Redux/Store/Store';

ReactDOM.render(
  <Provider store={store}>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </Provider>,
  document.getElementById('root')

app.js

return (
  <>
    <Routes> 
      <Route path="/login" element={<Login />} />
      <Route path="/inventory/*" element={<Inventory />} />
      <Route path="/process/*" element={<Process />} />
    </Routes>
  </>
)

库存.js

return (
  <>
    <Routes> 
      <Route path="/" element={<Layout />}>
        <Route index element={<RawItems />} />
        <Route path=":Item/*" element={<Material />} />
      </Route>
    </Routes>
  </>
)

Material.js

return (
  <>
    <Routes> 
      <Route path="/" element={<Layout />}>
        <Route index element={<Cupper />} />
        <Route path="alumin" element={<Aluminium />} />
      </Route>
    </Routes>
  </>
)

Issue:这是问题发生的地方

应用程序到库存 ===> 工作正常

inventory/:Item ====> 渲染 Material.js 组件

当 uri 触及这条路径时

inventory/:Item/ and inventory/:Item/alumin===> 该路径未渲染Cupper.js and Aluminium.js

这里的问题是什么,为什么这个嵌套路由不起作用(inventory/:Item/*)

如果它不起作用然后why previous nested route working(/inventory/*)**

我完全困惑问题发生在哪里。是在 nginx docker 容器构建中还是react-router实施问题?


None

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

为什么嵌套路由(react-router)不能与 nginx 容器 docker build 一起使用 的相关文章

随机推荐

  • 使用 nth-child 设置第 4 项及以后项目的样式

    我有一个列表项 我希望第四项及以后的项有不同的background color 我尝试过以下方法 li nth child 4 background color blue 这仅对第 4 个项目进行样式设置 然后我尝试了以下操作 希望它能够为
  • Java 8 多线程:如何实现并行性以及单个线程的超时?

    我想要实现的目标摘要 我想并行执行 N 个任务 这样任何单个任务的运行时间都不应超过两秒 我们可以将此类任务标记为失败 作为输出 我想返回成功任务的输出和失败任务的状态为失败 此外 一项任务的超时不应导致电路中断 即其他任务的执行不应停止
  • 如何在 UML 中表示从模板参数的继承?

    使用 UML 我如何表示A lt Foo gt 在下面的代码中 template lt class T gt class A public T class Foo A lt Foo gt a foo 像这样的东西 对可怜的ascii艺术表示
  • ForkJoinPool - 为什么程序抛出 OutOfMemoryError?

    我想在 Java 8 中尝试 ForkJoinPool 所以我编写了一个小程序来搜索给定目录中名称包含特定关键字的所有文件 Program public class DirectoryService public static void m
  • C# 将字节数组附加到现有文件

    我想将字节数组附加到已经存在的文件中 C test exe 假设以下字节数组 byte appendMe new byte 1000 File AppendAllBytes C test exe appendMe Something lik
  • 嵌套 jQuery 选择器

    无论如何 是否有嵌套的 jQuery 选择器 例如 如果该页面还有一个ID LeadEditForm Title 某处然后执行以下操作 jQuery id A0 R0 Main Phone Number live mousedown fun
  • 在 Android 中使用 EditText 小部件屏蔽输入

    有没有办法可以为 Android 中的 EditText 控件指定输入掩码 我希望能够为社会安全号码指定类似 的内容 这将导致任何无效输入被自动拒绝 例如 我输入字母字符而不是数字 我意识到我可以添加 OnKeyListener 并手动检查
  • 如何检测用户是否不允许位置更新

    如果用户在首次启动时拒绝允许位置更新 我怎么能检测到这个 检查CLLocationManager 的authorizationStatus 方法
  • Environment.getExternalStorageDirectory().listFiles() 返回 null

    我的应用程序中需要一个文件选择器 在尝试了不起作用的第三方库 无内容 后 我尝试自己实现它 并且得到了相同的结果 最奇怪的是 Environment getExternalStorageDirectory listFiles 返回空值 这是
  • 如何让 Pycharm 从测试文件夹递归运行所有 python 单元测试

    我来自 Java 背景 因此我将单元测试组织成单独的并行测试层次结构 以反映我的主项目的结构 我使用 PyCharm 代替 Intellij 或 Eclipse 在这两个 I IDE 中 我可以选择任何正在测试的包 并在此命名空间下递归运行
  • 如何获取 HTML5 画布文本来显示 html 实体?

    我正在解析一个 xml 文件 该文件存储我需要在画布上显示的图像 标题数据 然而 偶尔文件中会有一个实体 当将文本绘制到画布上时 它会将其解释为平面文本 我怎样才能得到 copy 在画布上显示为 这是否可能 或者有人知道一个好的解决方法吗
  • Nhibernate Linq 查询到 QueryOver

    我有以下代码 1 ids GetAnArrayOfIds 2 jobEntities jobEntities Where j gt j Locations Select l gt l Id Any ids Contains 如何使用 Que
  • std::allocate_shared 使用什么类型来分配内存?

    From https en cppreference com w cpp memory shared ptr allocate shared https en cppreference com w cpp memory shared ptr
  • 从 Http Servlet 请求标头读取浏览器/客户端时间

    当向 servlet 发出请求时是否可以读取浏览器 客户端计算机 时间 我不相信是这样 不幸的是HTTPDate http www w3 org Protocols rfc2616 rfc2616 sec14 html sec14 18标头
  • R 中的成对交互矩阵

    我正在尝试计算 R 中的成对矩阵 该矩阵计算个体与其他个体交互的次数 因此该矩阵将包含与个体数量相对应的 N 行和列 我有一个数据框 在单独的列中列出 演员 和 合作伙伴 nn lt data frame actors c DOL DOL
  • 为什么建议 React 的 PureComponent 所有子组件都“纯”

    看完官方的介绍反应文档 https reactjs org docs 我遇到过this https reactjs org docs react api html reactpurecomponent关于纯组件 此外 React PureC
  • Visual Studio 生产力电动工具配置设置

    我试图找出 Visual Studio Productivity Power Tools 设置的存储位置 我最近转移到 Visual Studio 的新实例 并且丢失了所有 Power Tools 正则表达式选项卡着色设置 它们显然不是正常
  • R 的plot() 中的默认字体是什么?

    我无法找出默认字体是什么plot R 中的选项是 我记得在某个地方黑体但我找不到任何消息来源来证实这个想法 有谁知道默认字体是什么plot 选项是以及如何更改字体 我知道有family选项 但字体的选择非常有限 我也知道有一个family下
  • 在 Pandas 中合并索引上的数据帧效率更高

    为什么在索引上合并 Pandas 中的数据帧比在列上合并数据帧更有效 更快 import pandas as pd Dataframes share the ID column df pd DataFrame ID 0 1 2 3 4 Jo
  • 为什么嵌套路由(react-router)不能与 nginx 容器 docker build 一起使用

    我想将我的项目部署到生产中 不幸的是我有一个搅拌机问题react router嵌套路由器方法 我已经尝试解决这个问题 3 小时了 但我能弄清楚 我不完全擅长 docker 和 nginx 配置 当我在开发中运行该项目时 它工作正常 甚至在正