2017-10-14 35 views
0

我有一个与NodeJS服务器一起运行的Angular应用程序。用Express代替app.get('*',func)路由

这段代码在我的server.js文件:

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 

require('./server/routes/routes')(app, passport); 

好像是防止任何GET请求我的API,例如:

module.exports = function (app, passport) { 
    app.get('/api/profile', isLoggedIn, function (req, res) { 
     res.status(200).json(req.user); 
    }); 

当导出/ API/profile文件处理程序更改为请求发挥作用的帖子。

该路由不应覆盖初始处理程序?如何实现这一目标?我可以为除“/ api”之外的所有路线提供应用吗?

回答

1

移动app.get('*')所以它变成被声明的最后一个路线:

require('./server/routes/routes')(app, passport); 

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 

快速判断路由处理器在他们声明的顺序,而不是它们的特异性的顺序(以及他们如何匹配特定要求)。