具有快速服务器的反应路由器上的捕获方法会破坏静态资产

时间:2018-05-21 06:42:01

标签: react-router-v4

我关注了catch-all route handling advice here,现在这样做会破坏我在公共文件夹中使用express.static提供的其他静态资产的访问权限,例如bundle.js和我的css文件。我想知道如何解决这个问题。我在控制台中收到此错误

Uncaught SyntaxError: Unexpected token <

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

我想知道当React路由器本身依赖于bundle.js在使用webpack的环境中加载时,该网站上的建议如何被视为一种解决方案,这种做法太常见而无法解决。这种解决方法是否只为我的所有静态资产制作单独的路线?我认为那不是那么可扩展的,特别是如果我有数百张我要服务的图像。感谢。

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"));

1 个答案:

答案 0 :(得分:0)

您需要将app.use(express.static("public"));放在全部路线上方。