Express应用程序在除一个子路由之外的所有路由上提供index.html

时间:2017-11-28 13:59:57

标签: express

我已经构建了一个react / webpack应用程序,其中包含distindex.html的公共目录bundle.jsindex.html链接到<script src="./bundle.js />的捆绑包,我希望为所有路由提供index.html(因为react-router处理路由)。但是对于/demos/:name,当name有值时,我想发送一个静态文件。例如,当/demos渲染为反应组件(服务器发送index.html)时,我的服务器会将/demos/one解释为从服务器请求/demos/one.html。到目前为止,我一直试图这样:

var express = require('express');
var app = express();

app.get("demos", (req,res) => {
    res.sendFile(__dirname + "/dist/index.html")
})

app.get("demos/:name", (req,res) => {
    const { name } = req.params
    res.sendFile(__dirname + `./demos/${name}.html`);

})

app.use("*", express.static('dist'));

var server = app.listen(8080, function () {
   var {host, port} = server.address()
   console.log(`listening at http://${host}:${port}`)
})

但是,我一直在浏览器控制台中获取Uncaught SyntaxError: Unexpected token <

1 个答案:

答案 0 :(得分:0)

app.get("demos/:name", (req,res) => {
  const { name } = req.params
  res.sendFile(__dirname + `./demos/${name}.html`);
})
app.get("*", (req,res) => {
  res.sendFile(__dirname + "/dist/index.html")
})