具有 Express 服务器的 React 路由器上的 catchall 方法会破坏静态资源

Qui*_*Kim 5 react-router-v4

我遵循了此处的包罗万象的路由处理建议,这样做现在会中断对我在公共文件夹中使用express.static提供的其他静态资产的访问,例如bundle.js和我的css文件。我想知道如何解决这个问题。我在控制台中收到此错误

Uncaught SyntaxError: Unexpected token <
Run Code Online (Sandbox Code Playgroud)

当尝试localhost:3000/bundle.js从浏览器打开时,我只是重定向到index.html,正如我认为的那样。我的快递服务器设置如下:

我想知道当 React Router 本身依赖于在使用 webpack 的环境中加载时,该网站上的建议如何被视为解决方案bundle.js,这太常见了,无法解决。唯一的解决方法是为我的所有静态资源创建单独的路由吗?我认为这不会那么可扩展,特别是如果我要提供数百张图像的话。谢谢。

const express = require("express");
const path = require("path");

const app = express();


app.get("/*", (req, res) => {
  res.sendFile(path.join(__dirname, "../public/index.html"), err => {
    if (err) res.status(500).send(err);
  });
});
app.use(express.static("public"));

app.listen(8080, _ => console.log("listening on 8080"));
Run Code Online (Sandbox Code Playgroud)

zyl*_*ylo 0

你需要把你的app.use(express.static("public"));路线放在你的包罗万象的路线之上。