【发布时间】:2020-10-16 13:03:19
【问题描述】:
我使用yarn build 构建了 React 应用程序。
为了让应用程序在我的服务器上运行,我在 package.json 文件中添加了 "homepage": "./"。
该应用程序存储在服务器上的一个文件夹中,我使用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>
当我点击Home 时,URL 切换到https://my-url.com/,我看到了 Home 组件。
点击Contact 后,URL 切换到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/
404 - https://my-url.com/appname 显示 App 组件但不呈现 Home 组件
-
https://my-url.com/appname/contact
404 -
https://my-url.com/contact
404
点击主页链接后,我得到 -https://my-url.com/ 显示 home 组件 之后点击联系链接,我得到 https://my-url.com/contact显示联系人组件
在两个网址上重新加载页面会得到404。
这是我的package.json:
{
"name": "appname",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.3"
},
"scripts": {
"start": "BROWSER=firefox PORT=2000 react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"homepage": "./"
}
【问题讨论】:
-
导航到
https://my-url.com/contact时是否收到404? -
是的,我收到了
404 -
所以,您说您可以通过my-url.com/appname 访问您的应用程序,对吧?那么,my-url.com/appname/contact 会起作用吗?
-
不,我也得到 404。 my-url.com/contact 是单击主页链接一次后的 URL。它显示组件。但是直接访问那个 URL 是行不通的
-
我更新了网址,使其更加具体。
标签: javascript reactjs react-router-dom