带有反应路由器和快递的嵌套路由不起作用

时间:2021-04-21 17:45:04

标签: reactjs express routes react-router create-react-app

我们最近使用 create-react-app 和 react-router v5 为我们的应用添加了一些子导航功能。我的解决方案是创建子路由,因为在对不同页面进行分组时这在语义上似乎是正确的:

<Switch>
  <Route to='/' component={HomePage} />
  <Route to='/normalroute' component={NormalComponent} />
  <Route to='/cars/list' component={CarsList} />
  <Route to='/cars/configuration' component={CarsConfig} />
  <Route to='/cars'>
    <Redirect to='/cars/list' />
  </Route>
</Switch>

这对于开发环境中的 CRA 来说工作得很好。但是,当我去构建时,我遇到了问题。导航到正常路由(即 //normalroute)会呈现预期的组件。但是转到这些子路由中的任何一个都会破坏整个应用程序,并且没有任何渲染。我在控制台中收到错误:

Uncaught SyntaxError: Unexpected token '<'
main.b4849a20.chunk.js:1 Uncaught SyntaxError: Unexpected token '<'
manifest.json:1 Manifest: Line: 1, column: 1, Syntax error.

我有一种感觉,这实际上与我的静态文件的提供方式有关。我正在使用 node/express 应用程序来提供静态文件。执行此操作的 express 应用程序部分如下所示:

  app.use(express.static("../my_app/build/", { redirect: true }));

  app.get("*", (req, res) =>
    res.sendFile(
      path.resolve(__dirname, "../my_app/build", "index.html")
    )
  );

我看到我的静态路由适用于根路径或一级路径(//cars),但是当存在二级路径(/cars/subpath)时,东西坏了。 Express 正在从 subpath/static/<js|css>/filename.chunk.<js|css> 提供资产文件(js 和 css),后者路由回服务 index.html。你可以在这里看到:

enter image description here

(真实路线命名为/devices,而不是/cars

从 express 提供静态文件的方式有问题,但我无法确定。我尝试修改快速代码以使用 this solution,但没有任何区别。任何帮助表示赞赏。

0 个答案:

没有答案