我正在尝试使用 Vite、React-Router-Dom-v6.6.1 和 Github Pages 发布我的第一个 React 应用程序,但由于某种原因index.html
未检测到文件并显示“404 错误”,但是此错误显示在我添加的页面上,以处理可能的错误,并且有一个选项可以返回主页;然而这个主页是通过阅读index.html
文件和相应的 javascript。但此时浏览器已经能够解释index.html
文件和所有内容的行为与开发环境类似,没有错误。
也就是说,由于某种原因,浏览器无法识别index.html
文件在第一次加载时(我认为),即使路径指向base: "/presentation/"
正在指向正确的地方。
下面是我发现最相关的文件,我的“Github Pages”(发生此问题的地方)的链接以及我针对这种情况制作的屏幕录制的链接,以便您可以更好地理解我想要解释的内容。
有问题的 Github 页面: https://cristianolm.github.io/presentation/
屏幕录制视频问题: https://youtu.be/b-R7g0JFcHk
VITE 文件
main.jsx
import React from "react";
import ReactDOM from "react-dom/client";
import {
createBrowserRouter,
RouterProvider,
createRoutesFromElements,
Route,
} from "react-router-dom";
import "./index.css";
// Redux Toolkit
import { Provider, useSelector } from "react-redux";
import store from "./reduxTlk/store";
/* existing imports */
import Root from "./routes/root";
import ErrorPage from "./error-page";
import Home from "./routes/home";
import WeatherStatus from "./routes/weatherStatus";
import { weatherLoader } from "./components/projects/ipma/TempTable";
const router = createBrowserRouter(
createRoutesFromElements(
<>
<Route path="/" element={<Root />} errorElement={<ErrorPage />}>
<Route index element={<Home />} />
<Route
path="WeatherStatus"
element={<WeatherStatus />}
loader={weatherLoader}
/>
</Route>
</>
)
);
ReactDOM.createRoot(document.getElementById("root")).render(
<React.StrictMode>
<Provider store={store}>
<RouterProvider router={router} />
</Provider>
</React.StrictMode>
);
包.json
{
"name": "vite-project",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5",
"@mui/icons-material": "^5.11.0",
"@mui/material": "^5.11.7",
"@reduxjs/toolkit": "^1.9.1",
"dompurify": "^2.4.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-redux": "^8.0.5",
"react-router-dom": "^6.6.1"
},
"homepage": "https://cristianolm.github.io/presentation/",
"devDependencies": {
"@types/react": "^18.0.24",
"@types/react-dom": "^18.0.8",
"@vitejs/plugin-react": "^2.2.0",
"vite": "^3.2.3"
}
}
vite.config.js
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
// https://vitejs.dev/config/
export default defineConfig({
base: "/presentation/",
plugins: [react()],
});
dist/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/presentation/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Cristiano Martins</title>
<script type="module" crossorigin src="/presentation/assets/index.6cda9410.js"></script>
<link rel="stylesheet" href="/presentation/assets/index.85f54fc4.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
首先,我尝试使用以下方法进行生产构建base line: "/presentation/,
in vite.config.js,然后我尝试在没有这一行的情况下执行相同的过程,最后我再次添加了该行,但我将其添加到包裹。 json线homepage": "https://cristianolm.github.io/presentation/,
.
当然,我尝试在谷歌上搜索另一个解决方案,但没有成功。