我有一个 Angular 应用程序与 NodeJS 服务器一起运行。
我的 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 处理程序更改为 post 时,请求有效。
路由不应该覆盖初始处理程序吗?如何实现这一目标?我可以为应用程序提供除以“/api”开头之外的所有路由吗?
最佳答案
移动app.get('*')
,使其成为最后声明的路由:
require('./server/routes/routes')(app, passport);
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.html'));
});
Express 按照声明的顺序检查路由处理程序,而不是按照其特殊性的顺序(它们与特定请求的匹配程度)。
关于javascript - 覆盖 app.get ('*' , func) 中的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46745500/