reactjs react应用程序在使用react-router-dom重新加载到路由页面后中断

huwehgph  于 2023-06-29  发布在  React
关注(0)|答案(1)|浏览(112)

我使用react与VITEreact-router-dom在本地托管react应用程序工作得很好,如果它托管在任何在线主机服务上,如 NETLIFYVERCELHOSTINGER 也工作得很好,但如果我传递到react-router使用的新路由页面-dom它工作正常,直到我重新加载路由它崩溃的页面,即使在多次重新加载仍然崩溃,但如果我seped回到主页路由页面“/”即使重新加载也能正常工作
错误消息=> GET https://planandresults.vercel.app/services 404
应用程序存储库:=> vercel托管的https://github.com/sfwnisme/planandresults应用程序:=> https://planandresults.vercel.app/
App()文件

function App() {
  const location = useLocation();
  const [t, i18n] = useTranslation();
  if (i18n.language === "en") {
    document.documentElement.style.direction = "ltr";
    document.documentElement.setAttribute("lang", "en");
  } else if (i18n.language === "ar") {
    document.documentElement.style.direction = "rtl";
    document.documentElement.setAttribute("lang", "an");
  }

  //----------
  useEffect(() => {
    Aos.init();
  }, []);

  useEffect(() => {
    window.scrollTo(0, 0);
  }, [location.pathname]);

  //----------
  console.log("App.jsx:", "Render App.jsx");

  return (
    <div
      className={`App bg-white ${
        i18n.language === "en" ? "font-sf" : "font-almaria"
      } text-white`}
    >
      <Routes>
        <Route
          path="/"
          element={
            <div className=" LANDING_PAGE mx-auto">
              <Header />
              <Services />
              <About />
              <WhyUs />
              <Partners />
              <Contact />
              <Footer />
            </div>
          }
        />

        <Route path="/services" element={<ServicesSection />} />
        <Route path="/services/service-0" element={<ServiceZero />} />
        <Route path="/services/service-1" element={<ServiceOne />} />
        <Route path="/services/service-2" element={<ServiceTwo />} />
        <Route path="/services/service-3" element={<ServiceThree />} />
        <Route path="/services/service-4" element={<ServiceFour />} />
        <Route path="/services/service-5" element={<ServiceFive />} />
        <Route path="/services/service-6" element={<ServiceSix />} />
        <Route path="/services/service-7" element={<ServiceSeven />} />
        <Route path="/about" element={<AboutPage />} />
        <Route path="/partners" element={<PartnersPage />} />
      </Routes>
    </div>
  );
}

通常试图从我的应用程序传递到路由页面,它工作正常,但当我重新加载页面时,它给了我一个控制台错误GET https://planandresults.vercel.app/services 404,并显示来自托管服务vercel的错误消息。
真的,我无法预料这个问题,这对我来说似乎很奇怪,因为我是React的新手

xe55xuns

xe55xuns1#

.htaccess文件只在apache服务器上工作,所以我认为它在这种情况下不会工作。
在项目的根目录下添加一个vercel.json文件,并使用“rewrites”重写所有传入路径以引用索引路径。
例如:

{
  "rewrites":  [
    {"source": "/(.*)", "destination": "/"}
  ]
}

点击此处了解更多信息:https://vercel.com/docs/configuration#project/rewrites

相关问题