React + Express.js服务器应始终返回相同的index.html文件,无论url route

时间:2016-05-07 08:51:19

标签: javascript node.js express reactjs routes

我一直试图在过去几个小时内解决这个问题,但找不到有效的方法。我现在正在使用的是标准:

app.get('/', function (req, res) { res.sendFile(__dirname + '/index.html'); });

我试图使用别人在另一个帖子中发布的解决方案:

app.get(/*./, function (req, res) { res.sendFile(__dirname + '/index.html'); });

但这不起作用,并给我一个“未捕获的SyntaxError:意外的令牌<”。

我想这个解决方案是基于expressjs自己的例子:

app.get(/*test$./, function (req, res) { res.sendFile(__dirname + '/index.html'); });

哪个适用于第一级中包含“test”短语的每条路线(并且只有第一个lvl'/ test'= yes,'/ app / test'=否。

我想要什么:因为我有一个反应应用程序总是返回相同的html页面,并处理应用程序中的无效路由我想让我的网页的每个请求返回完全相同的index.html(无论什么路线用户要求'/' - > index.html'/ test / test / test / test' - > index.html等等。

任何人都有任何想法我怎么能这样做?我已经用完了谷歌搜索结果

提前致谢!

以下是我现在的整个服务器:

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

app.use('/build', express.static('build'));

io.on('connection', function(socket){
    console.log('Connected');
});

http.listen(3000, function(){
    console.log('listening on *:3000');
});

3 个答案:

答案 0 :(得分:2)

如果您只有app.use(yourStaticMiddleware),那么该函数 “yourStaticMiddleware”将针对每个请求执行。如果该中间件结束响应(例如通过调用res.send()或res.sendFile()),那么除了错误处理程序之外,不会调用它。

答案 1 :(得分:1)

这适用于每个获取请求

app.get("*",function(req,res,next){
  res.sendFile(__dirname + '/index.html');
})

答案 2 :(得分:0)

使用app.all()方法。

  

此方法用于在所有请求方法的路径中加载中间件函数。

app.all(function (req, res, next) {
   //will hit every page request regardless of http method
    next(); // pass control to the next handler
});

有关详情,请参阅exprress routing