Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
Reactjs react路由器4和express:无法获取_Reactjs_Express_React Router - Fatal编程技术网

Reactjs react路由器4和express:无法获取

Reactjs react路由器4和express:无法获取,reactjs,express,react-router,Reactjs,Express,React Router,我正在尝试使用带有Express服务器的react路由器4 如果我将路径设置为“/”,它会工作。 但是如果我设置路径“/test”并访问test,我会得到“cannotget/test”。 是因为React路由器4与Express不兼容吗 app-client.js: import { BrowserRouter, Route, Switch } from 'react-router-dom'; import Board from './components/Board'; ReactDOM.

我正在尝试使用带有Express服务器的react路由器4

如果我将路径设置为“/”,它会工作。 但是如果我设置路径“/test”并访问test,我会得到“cannotget/test”。 是因为React路由器4与Express不兼容吗

app-client.js:

import { BrowserRouter, Route, Switch } from 'react-router-dom';
import Board from './components/Board';

ReactDOM.render(
    <BrowserRouter>
        <div>
            <Route path="/test" component={Board} />
        </div>
    </BrowserRouter>
    , document.getElementById('react-container'));
从'react router dom'导入{BrowserRouter,Route,Switch};
从“./组件/板”导入板;
ReactDOM.render(
,document.getElementById('react-container');
Board.js:

var React = require('react');
var createReactClass = require('create-react-class');

var Board = createReactClass({
    render(){
        return (<h1>Board</h1>)
    }    
});

export default Board;
var React=require('React');
var createReactClass=require('create-react-class');
var板=createReactClass({
render(){
返回(板)
}    
});
导出默认板;

为了确保您的所有路线都由React处理,在定义了您的所有快速路线后,我们将确保任何未在express app中处理的路线都将重定向到React app中要处理的
index.html
,如下所示:

// All expressjs routes
// then
app.get('*', (req, res) => {                       
  res.sendFile(path.resolve(__dirname, 'the path to your react project', 'index.html'));                               
});

我的问题与OP相同,我遵循Amr Aly的指示,并查看了几篇博客文章和github问题,如下所示:

但是,在遵循他们的指示后,将抛出此错误:


“未捕获的语法错误:意外的标记
但是如果我设置了路径“/test”
,您的意思是什么?如果您的意思是通过浏览器导航到那里(比如在URL栏中输入并按enter按钮),与在React中导航不同,这是两件不同的事情。它是服务器端与客户端路由。我希望在浏览器中导航到/测试时组件显示,然后查看Amr处理该服务器端的答案。另外,请在发布前搜索您的问题,快速的谷歌搜索将为您提供来自数不清的资料来源。非常感谢Amr。我后来恢复到旧的react路由器版本。但我很确定这会解决问题,所以我选择这个作为我的答案。如果有人能解释为什么旧的react/express设置不需要
app.get('*',
…我会很感激。我听说过“react路由器v4”是“动态的”,但我不确定这意味着什么(组件动态渲染?)。