javascript - 覆盖 app.get ('*' , func) 中的路由

标签 javascript node.js angular express passport.js

我有一个 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/

相关文章:

javascript - 无法将值传递回 HTML 页面

node.js - Electron —加载SVG(作为标记)

javascript - 发出 Axios GET 请求时无限循环 - 循环不会关闭

javascript - 来自服务的数据请求不起作用

unit-testing - 运行使用 "Cannot use setInterval from within an async zone test"调用 setTimeout 错误的 Angular2 测试

javascript - 在node.js中正确使用这个内部回调函数

javascript - "Unexpected token ."JSON 解析无法解析带前导零的十进制

Angular 2观察http结果

php - 在 Javascript 中使用 Crypto-js 加密,在 PHP 中使用 mcrypt 解密?

javascript - 创建一个可以将网站添加到主屏幕的按钮