为了账号安全,请及时绑定邮箱和手机立即绑定

React Router 在构建到 ftp 服务器后不渲染组件

React Router 在构建到 ftp 服务器后不渲染组件

qq_花开花谢_0 2023-05-19 17:05:39
我用yarn build. 为了让应用程序在我的服务器上运行,我添加"homepage": "./"了 package.json 文件。该应用程序存储在服务器上的一个文件夹中,我使用https://my-url.com/appname访问该应用程序App.js 已呈现,但我没有看到我的组件:function App() {  const [navigationState, setNavigationState] = useState(false);  return (    <div className="App">      <Router>        <Header          showNavigation={navigationState}          setShowNavigation={setNavigationState}        />        <Switch>          <Route path="/" exact component={Home} />          <Route path="/contact" exact component={Contact} />        </Switch>        <Footer />      </Router>      <div className="space"></div>    </div>  );}在Header组件中我有我的链接<Link to="/">Home</Link> <Link to ="/contact">Contact</Link>当我单击HomeURL 切换到https://my-url.com/时,我看到了 Home 组件。单击ContactURL 切换到https://my-url.com/contact后,我看到了联系人。我的 .htaccess 看起来像:<IfModule mod_rewrite.c>  RewriteEngine On  RewriteBase /  RewriteRule ^index\.html$ - [L]  RewriteCond %{REQUEST_FILENAME} !-f  RewriteCond %{REQUEST_FILENAME} !-d  RewriteCond %{REQUEST_FILENAME} !-l  RewriteRule . /index.html [L]</IfModule>我需要做什么才能保留文件夹路径并在第一次调用时呈现主组件?https://my-url.com/ 404https://my-url.com/appname显示 App Component 但不呈现 Home 组件https://my-url.com/appname/contact 404https://my-url.com/contact 404单击主页链接后,我得到 -https://my-url.com/ 显示主页组件单击联系人链接后,我得到 https://my-url.com/contact显示联系人组件在两个 url 上重新加载页面会给出404.
查看完整描述

4 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

为了让它工作,我做了以下步骤:


添加.htaccess文件到public文件夹:

Options -MultiViews

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ index.html [QSA,L]

修改package.json并添加:

"homepage": "http://my-url.com/foldername"

在App.js将文件夹名称添加到<Route path="<<here>>" />:

<Route path="/foldername/" exact component={Home} />

<Route path="/foldername/contact" exact component={Contact} />


查看完整回答
反对 回复 2023-05-19
?
呼如林

TA贡献1798条经验 获得超3个赞

我在以前的项目中遇到过这个问题,因为它是带有 apache 的 GoDaddy Linux 主机,所以我添加了这一行


"homepage": "my-url.com" 到你的 package.json


然后我编辑了我的 .htaccess 文件,在上面添加了我的主要路线


我使用的文件有这个内容


RewriteOptions inherit

RewriteEngine On

  RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f

  RewriteCond %{REQUEST_FILENAME} !-d

  RewriteCond %{REQUEST_FILENAME} !-l

  RewriteRule . / [L]


查看完整回答
反对 回复 2023-05-19
?
冉冉说

TA贡献1877条经验 获得超1个赞

我认为这可能与 react-router 处理客户端或服务器端渲染 (SSR) 渲染的方式有关。请检查此文档片段以正确设置客户端 https://create-react-app.dev/docs/deployment/#serving-apps-with-client-side-routing

或者尝试将渲染配置更改为 SSR,应该没问题。


查看完整回答
反对 回复 2023-05-19
?
翻阅古今

TA贡献1780条经验 获得超5个赞

有同样的问题!我解决了它以BrowserRouterHashRouter我的App.jsx. 我的 FTP 无法处理BrowserRouter.

在我更新所有内容后,它工作正常。


查看完整回答
反对 回复 2023-05-19
  • 4 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信