Javascript 反应路由器未打开404未找到页面
我用react路由器创建了以下内容Javascript 反应路由器未打开404未找到页面,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我用react路由器创建了以下内容 import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; class Main extends Component { render() { return ( <Router> <Switch> <Route exact path='/' component={Content}
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
class Main extends Component {
render() {
return (
<Router>
<Switch>
<Route exact path='/' component={Content} />
<Route path='/user/:id' component={User} />
<Route path='*' component={NotFound} />
</Switch>
</Router>
);
}
export default Main
我正在使用react router dom:^4.3.1为了使客户端路由正常工作,服务器需要始终为所有路由返回相同的index.html
因此,localhost:3000/err需要使用客户端路由器javascript返回index.html。为了使客户端路由正常工作,服务器需要始终为所有路由返回相同的index.html
因此,localhost:3000/err需要使用客户端路由器javascript返回index.html。您尝试过使用重定向吗?我在我的应用程序中使用它,它工作得非常好。以下是更新后的代码供您参考-
import {Route, Switch, Redirect } from 'react-router-dom';
class Main extends Component {
render() {
return (
<Switch>
<Route exact path='/' component={Content} />
<Route path='/user/:id' component={User} />
<Route path="/not-found" render={props => <NotFoundPage />} />
<Redirect to="not-found" />
</Switch>
);
}
export default Main
将你的应用程序放在BrowserRouter中
import React from 'react'
import ReactDOM from 'react-dom'
import { BrowserRouter } from 'react-router-dom'
import { Provider } from 'react-redux'
import { createStore } from 'redux'
import App from './components/app.js'
import styles from './styles/style.css'
import { store } from './stores/store'
ReactDOM.render((
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
), document.getElementById('root'))
如果有帮助,请告诉我。您是否尝试过使用重定向?我在我的应用程序中使用它,它工作得非常好。以下是更新后的代码供您参考-
import {Route, Switch, Redirect } from 'react-router-dom';
class Main extends Component {
render() {
return (
<Switch>
<Route exact path='/' component={Content} />
<Route path='/user/:id' component={User} />
<Route path="/not-found" render={props => <NotFoundPage />} />
<Redirect to="not-found" />
</Switch>
);
}
export default Main
将你的应用程序放在BrowserRouter中
import React from 'react'
import ReactDOM from 'react-dom'
import { BrowserRouter } from 'react-router-dom'
import { Provider } from 'react-redux'
import { createStore } from 'redux'
import App from './components/app.js'
import styles from './styles/style.css'
import { store } from './stores/store'
ReactDOM.render((
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
), document.getElementById('root'))
让我知道这是否有帮助。最后,我通过以下解决方案解决了问题 在我的网页包配置文件webpack.config.js中,我添加了以下内容:
output: {
publicPath: '/'
},
devServer: {
historyApiFallback: true
}
最后,我通过下面的解决方案解决了这个问题 在我的网页包配置文件webpack.config.js中,我添加了以下内容:
output: {
publicPath: '/'
},
devServer: {
historyApiFallback: true
}
反应路由器dom:^5.1.2,
反应路由器dom:^5.1.2,
我在server.js文件中完成了以下操作。app.get'*',req,res=>{res.sendFilepath.join_udirname'./index.html';};在devTools中看到index.html了吗?那么,您的服务器express?并没有正确返回所有路由的配置。实际上,我有以下代码。app.get'*',req,res=>{res.sendFilepath.join_udirname'./index.html';};app.listenport,函数err{if err{console.logerr;}else{open'http://localhost:“+port;}}}我在server.js文件中完成了以下操作。app.get'*',req,res=>{res.sendFilepath.join_udirname'./index.html';};在devTools中看到index.html了吗?那么,您的服务器express?并没有正确返回所有路由的配置。实际上,我有以下代码。app.get'*',req,res=>{res.sendFilepath.join_udirname'./index.html';};app.listenport,函数err{if err{console.logerr;}else{open'http://localhost:“+port;}}}您说我试图打开localhost:3000/err,但它无法找到NotFound组件。。你得到了什么?我只是尝试使用react router dom:^4.3.1使用您的代码,它在localhost上运行正常:3000/err I get 404 Page Not Found。@MarcoS I get无法获取/err您的项目编译成功吗?例如:您是否成功编译了类似的内容!你的纱线开始命令?最重要的是,你现在可以在浏览器中查看我的应用程序了@马科斯:是的。i「wdm」:编译成功。localhost:3000/工作正常吗?您说我试图打开localhost:3000/err,但无法找到组件。。你得到了什么?我只是尝试使用react router dom:^4.3.1使用您的代码,它在localhost上运行正常:3000/err I get 404 Page Not Found。@MarcoS I get无法获取/err您的项目编译成功吗?例如:您是否成功编译了类似的内容!你的纱线开始命令?最重要的是,你现在可以在浏览器中查看我的应用程序了@马科斯:是的。我(wdm):编译成功。localhost:3000/工作正常吗?更新了我的答案。这肯定有用。对不起。不走运。它甚至会停止renderIt的其他组件无法打开未找到的页面我相信你已经在你的index.js中添加了BroswerRouter。你应该将它添加到你捆绑整个应用的文件中。更新了我的答案。这肯定有用。对不起。不走运。它甚至会停止renderIt的其他组件无法打开找不到的页面我相信你已经在index.js中添加了BroswerRouter。你应该将它添加到你捆绑整个应用程序的文件中。