express js - промежуточное ПО для обработки ошибок с auth0 - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть следующий экспресс-сервер:

import * as express from "express";
import * as bodyParser from "body-parser";
import * as mongoose from "mongoose";

import { Routes } from "./routes/transactions";
import { authMiddleware } from "./middleware/auth";
import { errorMiddleware } from "./middleware/error";

class App {
  public app: express.Application;
  public routeProvider: Routes = new Routes();
  public mongoUrl: string = "mongodb://...:...@mydomain.com:27017/mycollection"; // This should be read from github CLI

  constructor() {
    this.app = express();
    this.config();
    this.routeProvider.routes(this.app);
    this.mongoSetup();
  }

  private config(): void {
    this.app.use(bodyParser.json());
    this.app.use(bodyParser.urlencoded({ extended: false }));
    this.app.use(errorMiddleware);
    this.app.use(authMiddleware);
  }

  private mongoSetup(): void {
    mongoose.Promise = global.Promise;
    mongoose.connect(
      this.mongoUrl,
      { useNewUrlParser: true }
    );
  }
}

export default new App().app;

Это authMiddleware (почти то же самое, что руководство на сайте auth0 для использования с node.js):

import * as jwt from "express-jwt";
import { expressJwtSecret } from "jwks-rsa";

export function authMiddleware() {
  return jwt({
    secret: expressJwtSecret({
      cache: true,
      rateLimit: true,
      jwksRequestsPerMinute: 5,
      jwksUri: "..."
    }),
    audience: "...",
    issuer: "...",
    algorithms: ["RS256"]
  });
}

И мое промежуточное ПО для ошибок:

import { Request, Response } from "express";

export function errorMiddleware(err, req: Request, res: Response, next) {
  console.error(err.stack);
  res.status(500).send("Something broke!");
}

Теперь, что должно было произойти - поскольку я специально разбил все URL-адреса auth и mongodb, я получил бы код состояния 500 с сообщением Something broke!.

Вместо этого я получаю

Не могу получить сообщение

при отправке запроса с использованием почтальона.

Что я делаюнеправильно?

...