Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应路由器未打开404未找到页面_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 反应路由器未打开404未找到页面

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}

我用react路由器创建了以下内容

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。你应该将它添加到你捆绑整个应用程序的文件中。