React 应用程序在部署后显示空白页面[重复]

2024-02-07

我之前在 GitHub 和 netlify 上创建并部署了单页 React 应用程序,它们都运行良好。问题在于使用react-router的多页面应用程序。为了测试这一点,我尝试了几次不同的应用程序,一旦我实现了反应路由器并链接到不同的页面,它们在部署后就会变成空白。这是一个测试应用程序:

index.js

import React from "react";
import ReactDOM from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import "./index.css";
import App from "./App";

const root = ReactDOM.createRoot(document.getElementById("root"));
 root.render(
  <React.StrictMode>
    <BrowserRouter>
     <App />
    </BrowserRouter>
  </React.StrictMode>
  );

App.js

import React from "react";
import { Routes, Route } from "react-router-dom";
import Index from "./pages/Index";
import About from "./pages/About";
import Products from "./pages/Products";
import Navbar from "./components/Navbar";

const App = () => {
return (
<>
  <Navbar />
  <Routes>
    <Route exact path="/" element={<Index />} />
    <Route path="/about" element={<About />} />
    <Route path="/products" element={<Products />} />
  </Routes>
</>
 );
}; 

export default App;

Navbar.js 组件

import React from "react";
import {Link} from "react-router-dom";

const Navbar = () => {
 return (
   <>
   <nav className="navbar">
    <ul>
      <li>
        <Link to="/">home</a>
      </li>
      <li>
        <Link to="/about">about</a>
      </li>
      <li>
        <Link to="/products">products</a>
      </li>
    </ul>
  </nav>
</>
);
};

export default Navbar;

包.json

{
 "name": "test-app",
 "version": "0.1.0",
 "homepage": "https://EricSsSnake/github.io/test-app",
 "private": true,
  "dependencies": {
  "@testing-library/jest-dom": "^5.16.5",
  "@testing-library/react": "^13.4.0",
  "@testing-library/user-event": "^13.5.0",
  "react": "^18.2.0",
  "react-dom": "^18.2.0",
  "react-router-dom": "^6.4.0",
  "react-scripts": "5.0.1",
  "web-vitals": "^2.1.4"
 },
  "scripts": {
   "predeploy": "npm run build",
   "deploy": "gh-pages -d build",
   "start": "react-scripts start",
   "build": "react-scripts build",
   "test": "react-scripts test",
   "eject": "react-scripts eject"
   },
  "eslintConfig": {
   "extends": [
   "react-app",
   "react-app/jest"
    ]
   },
  "browserslist": {
   "production": [
   ">0.2%",
   "not dead",
   "not op_mini all"
   ],
  "development": [
   "last 1 chrome version",
   "last 1 firefox version",
   "last 1 safari version"
   ] 
  },
 "devDependencies": {
  "gh-pages": "^4.0.0"
 }
}

再加上 3 个要导航的页面。

当我在 GitHub 上部署它时,我得到的只是一个包含这些错误的空白页面。截屏 https://i.stack.imgur.com/gZTzq.png

对于部署,我遵循本教程:反应-gh-页面 https://github.com/gitname/react-gh-pages

我真的很感谢你们的帮助。这个问题阻止了我取得任何进展。我花了三周时间制作我的作品集,但现在它就放在那里了。

update: 将 BrowserRouter 替换为 HashRouter 修复了最初的问题,并且控制台中不再出现任何错误。但是,我现在得到的是一个空白页面,就好像索引页面设置的路由不存在一样。 我认为我现在遇到的问题与此线程类似:将reactjs应用程序部署到github页面后出现空白页面 https://stackoverflow.com/questions/68701401/getting-a-blank-page-after-after-deploying-reactjs-app-to-github-pages


改变 :

"homepage": "https://EricSsSnake/github.io/test-app",

to :

"homepage": "https://EricSsSnake.github.io/test-app",

and use 哈希路由器代替浏览器路由器。 在你的情况下改变你的index.js像这样 :

import React from "react";
import ReactDOM from "react-dom/client";
import { HashRouter } from "react-router-dom";
import "./index.css";
import App from "./App";

const root = ReactDOM.createRoot(document.getElementById("root"));
 root.render(
  <React.StrictMode>
    <HashRouter>
     <App />
    </HashRouter>
  </React.StrictMode>
  );

Note :github 页面不支持 React RouterbrowserHistory因为它正在使用HTML5历史API这就是为什么你可以切换到使用哈希值的路由(HashRouter在反应路由器中)检查官方文档创建反应应用程序 https://create-react-app.dev/docs/deployment/#serving-apps-with-client-side-routing

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

React 应用程序在部署后显示空白页面[重复] 的相关文章

  • Angular2通用部署到apache远程服务器

    我在将 Web 应用程序部署到 Apache 远程服务器时遇到问题 我已经通过以下步骤部署了一个使用 RESTful API 服务 用 PHP 编写 托管在 public html api 的标准 Angular2 Web 应用程序 在项目
  • 将随机字符串转换为十六进制颜色

    我的应用程序中有一个操作日志表 我想根据该条目的 sessionID 为行分配随机颜色 以帮助查看模式 分组操作 到目前为止我有这个 console log stringToColorCode mj3bPTCbIAVoNr93me1I fu
  • 在 javascript 中访问 ajax POST 响应

    我正在从 javascript 函数发出 ajax POST 请求 function UpdateMetrics ajax type POST url MyHandler ashx Param1 value1 data contentTyp
  • React JS - 单击时更改颜色并将默认颜色放在所有其他颜色上

    我有 x 个渲染数文章预览依赖于 API 调用的组件 div div Object keys images map index i gt return div div
  • 在 Javascript 中动态添加事件处理程序

    我在使用 Javascript 时遇到了一个奇怪的问题 我得到的是一个特定格式的字符串 我将尝试用它创建一个表 该表每行只有一个单元格 字符串的格式为 每个单元格 行 需要显示内容 将传递给的参数onmouseover当用户将鼠标移动到显示
  • 通过 Javascript 将图像切割成碎片

    我正在创建一个简单的拼图游戏 为了做到这一点 我需要将我正在使用的图片切成 20 块 Javascript 有没有办法将一张图片切成 20 个相等的部分 并将它们保存为网页中的 20 个不同的对象 或者我只需要进入 Photoshop 自己
  • 嵌套辅助函数和性能

    嵌套辅助函数对于使代码更易于理解非常有用 谷歌甚至建议在他们的应用程序中使用嵌套函数时尚指南 https google styleguide googlecode com svn trunk javascriptguide xml Nest
  • 这种 JavaScript 编码风格有什么问题? (闭包与原型)

    我们一直在讨论如何最好地处理我们的 JS 应用程序中的对象 研究 Stoyan Stefanov 的书 阅读无数关于 新 这个 原型 闭包等的 SO 帖子 事实上有很多 而且它们有这么多相互竞争的理论 表明没有完全明显的答案 让我们假设我们
  • 如何创建自定义元素扩展类的新实例

    我正在尝试以下示例谷歌开发者网站 https developers google com web fundamentals getting started primers customelements extendhtml我收到错误 Typ
  • 如果多个键是相同的 JS,则对对象中的值求和

    例如我有 5 个对象 row aa col 1 value 1 row bb col 2 value 1 row bb col 3 value 1 row aa col 1 value 1 row aa col 2 value 1 我想对值
  • Menu.Item 中的 Antd 自动换行

    可以在 Menu Item 组件中应用自动换行吗 示例不起作用
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • Nextjs 无法在生产环境中的“.next”目录中找到有效的构建

    我正在 docker 中运行我的应用程序 但我的生产构建和启动脚本仅在 docker 环境中失败 虽然node env开发在docker环境下运行良好 这是我的脚本 无法进行生产构建并启动服务器 我正在使用nodemon和babel bui
  • 为 Meteor 数据创建编号列表

    有没有办法获取 Meteor 集合中项目的编号列表的 编号 我知道我可以在 html 中做到这一点 但我觉得如果我可以在 spacebars 中放置一些东西 那么样式会更容易 如果我可以使用更好的术语 请告诉我 像这样的东西 前 20 部电
  • 为什么从浏览器上传到 S3 时出现 403 错误?

    因此 我尝试查看此处之前的答案 但似乎没有任何效果 我正在使用 Dropzone 它似乎发出 OPTIONS 请求来获取所有允许的 CORS 相关信息 但它似乎没有正确返回 因此 通过查看 Chrome 开发工具 我有以下请求标头 Host
  • javascript:window.print() 打印 2 页,而我有 1 页

    我有一个简单的 HTML 文档 其中仅包含图像标签 我想在文档加载后打印图像 我的代码 img src form1 jpg alt form1 style margin 0 auto display block 它可以工作 但问题是它打印图
  • 如何按字母顺序排序并先小写排序

    如何获得以下排序的结果Food to Eat然后是 食物123 显然 第二个较低的 o 应该将 要吃的食物 带到排序后的第一个项目中 我很惊讶这个问题不容易通过谷歌找到答案 这个壮举没有包含在 javascript 标准中也让我感到惊讶 F
  • Jquery 两个字段的时间差(以小时为单位)

    我的表单中有两个字段 用户可以在其中选择输入时间 start time end time 我想在更改这些字段时重新计算另一个字段的值 我想做的是获取两次之间的小时数 例如 如果我的开始时间为 5 30 结束时间为 7 50 我想将结果 2
  • 更改javascript nodejs中所有页面的href url

    我已经实现了具有多种语言下拉菜单的引导导航栏 当我选择语言时 它将翻译页面 如何更改其他页面的 url 和按钮文本 当我选择french 将所有网址更改为 fr about and fr contact 如何使用 JavaScript 进行
  • 使用 javascript Array reduce() 方法有什么真正的好处吗?

    reduce 方法的大多数用例都可以使用 for 循环轻松重写 对 JSPerf 的测试表明 reduce 通常会慢 60 75 具体取决于每次迭代内执行的操作 除了能够以 函数式风格 编写代码之外 还有什么真正的理由使用reduce 吗

随机推荐

  • 如何在Javascript中使用jade Mixin?

    在翡翠中 我正在做测试混合 mixin test testName test span Test String 但我想在javascript中使用它 这是在jade文件中声明的 script type text javascript doc
  • Keras CNN:将文本作为除图像之外的附加输入添加到 CNN

    我正在尝试训练 CNN 进行对象分类 因此 除了图像之外 我还想输入一些文本特征 我在这里找到了一个这样做的例子http cbonnett github io Insight html http cbonnett github io Ins
  • XNA DrawString() 仅绘制部分字符串

    我有一个问题DrawString in XNA 我使用多个SpriteBatches对于几个逻辑层 例如 背景 对象 菜单等 在我的菜单批处理中 我绘制了一个菜单 背景中的大灰色框 按钮 菜单上较小的灰色框 以及按钮的字符串 问题 http
  • 为什么即使在“git checkout --”之后,Git 仍坚持认为文件已被修改?

    我在本地更改了几个文件 而不承诺它们 git status shows gt gt git status On branch feature ravendb Your branch is ahead of origin feature ra
  • 如何在 Struts 2 中使用注释定义拦截器

    我正在尝试使用struts2 convention plugin它提供了Java注释来定义Struts2组件 With Action到目前为止一切都很好 但是我如何使用注释来定义拦截器 我说的是 InterceptorRefs or Int
  • GNU/Linux 下的 Boost.Log 链接错误

    我想测试 Boost Log 库 不幸的是 我收到链接错误 我使用 Arch Linux 并通过内置包管理器安装了 Boost 标头和库pacman 提升1 54 0 3 升压库 1 54 0 2 编译简单示例时官方网站 http boos
  • 多次捕获组

    最近我一直在玩Java中的正则表达式 我发现自己遇到了一个 理论上 很容易解决的问题 但我在想是否有更简单的方法来做到这一点 是的 是的 我很懒 问题是多次捕获一个组 这是 public static void main String ar
  • Javascript 返回错误的日期值 (NodeJS)

    我正在开发 NodeJS 项目 但得到了错误的日期值 我不明白我做错了什么 var d new Date results 1 timestamp console log results 1 timestamp 2016 05 10T13 2
  • 如何在SQL中计算IPv6 CIDR路由前缀?

    我一直致力于使用在 SQL Server 2012 实例上运行的 T SQL 从 IPv4 和 IPv6 地址范围生成 CIDR 一般来说 我们的应用程序 数据库外部 负责计算 CIDR 但我目前需要在数据库中进行 CIDR 计算 由于 I
  • 在 UITableView 中显示多个自定义单元格?

    我在 SnowLeopard 上使用 Xcode 4 2 我的项目正在使用故事板 我正在尝试实施一个UITableView具有 2 种不同的自定义细胞类型 sessionCelland infoCell 我可以让这两种类型出现在同一个列表中
  • AvalonDock 2 与 Caliburn Micro

    是否有关于将 AvalonDock 与 Caliburn Micro MVVM 结合使用的博客或文章 谷歌搜索时没有找到太多 http avalondock codeplex com http avalondock codeplex com
  • 在 Golang 中测试 HTTP 路由

    我正在使用 Gorilla mux 和 net http 包创建一些路由 如下所示 package routes some imports some stuff func AddQuestionRoutes r mux Router s r
  • 当耗尽 Kubernetes 集群中的节点时会发生什么?

    当您耗尽 Kubernetes 集群中的节点时 我想了解一些有关维护准备的说明 这是我在跑步时所知道的kubectl drain MY NODE 节点被封锁 Pod 正常关闭 您可以选择忽略 Daemonset pod 因为如果它们被关闭
  • 强大的javascript画布库[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 jQuery 解析不带引号的 JSON 数据

    我正在尝试使用通过 AJAX 从远程服务器获取的 jQuery 解析 JSON JSON 数据如下 identifier ID label LABEL 但无法 显然 字段标识符和标签没有双引号 当在我的本地测试站点上使用双引号进行测试时 它
  • C++11 const && 的绑定规则

    很多人不知道const右值引用是 C 11 语言的一部分 This http www codesynthesis com boris blog 2012 07 24 const rvalue references 博客文章讨论了它们 但在约
  • TFS Confluence 集成或替代方案

    我们可能会使用 Team Foundation Server TFS 但是 我发现它缺少 Confluence 管理需求文档的敏捷性 并且我认为 SharePoint 也没有那么好 我的问题是 是否可以将 TFS 与 Confluence
  • 防止幸运补丁/播放许可的方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我即将发布一个应用程序 但不希望它被盗版 有一些应用程序 例如 luckypatcher 即使您有许可 也可以为您破解该应用程序 有人
  • 我如何在android上设置相机防抖(图像稳定器)功能

    我制作了一个相机应用程序 我想添加防抖功能 但我找不到防抖 图像稳定器 的设置 请帮助我 通常图像稳定器是内置的相机功能 而OIS 光学图像稳定 是内置的hardware特征 到目前为止 很少有设备支持它们 如果设备没有内置功能 我认为您无
  • React 应用程序在部署后显示空白页面[重复]

    这个问题在这里已经有答案了 我之前在 GitHub 和 netlify 上创建并部署了单页 React 应用程序 它们都运行良好 问题在于使用react router的多页面应用程序 为了测试这一点 我尝试了几次不同的应用程序 一旦我实现了