我有一个与NodeJS服务器一起运行的Angular应用程序。
我的server.js文件中的代码:
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.html'));
});
require('./server/routes/routes')(app, passport);
似乎阻止了对我的api的任何GET请求,例如:
module.exports = function (app, passport) {
app.get('/api/profile', isLoggedIn, function (req, res) {
res.status(200).json(req.user);
});
当导出的/ api / profile处理程序更改为帖子时,请求将起作用。
路由是否应该覆盖初始处理程序?怎么做到这一点?我可以为所有路线提供应用程序,不包括以'/ api'开头吗?
答案 0 :(得分:1)
移动app.get('*')
,使其成为声明的最后一条路线:
require('./server/routes/routes')(app, passport);
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.html'));
});
Express按照声明的顺序检查路由处理程序,而不是按其特定顺序(它们与特定请求的匹配程度)进行检查。