node.js express 전역 이상 포획 3가지 방법 실례 분석

1654 단어
본문의 실례는 node를 서술하였다.js express에서 전역 이상을 포착하는 세 가지 방법.여러분에게 참고하도록 공유하겠습니다. 구체적으로는 다음과 같습니다.
장면
express의 루트에서 이상을 던진 후 전역 중간부품을 포획할 수 없습니다. 모든 루트 함수에trycatch를 써야 합니다. 이 구덩이의 논리는 매번 n행 코드를 많이 써야 합니다.
공식 오류 포획 중 부품 간 코드는 다음과 같다.

app.use(function(err, req, res, next) {
 console.error(err.stack);
 res.status(500).send('Something broke!');
});


테스트는 클라이언트가 이미 렉이 걸려서 결과를 되돌려 주지 않았음을 증명합니다
해결 방법 1

process.on('uncaughtException', function(err) {
 console.log('Caught exception: ' + err);
});

명령줄에서 출력을 캡처할 수 있지만 클라이언트에게 오류를 되돌릴 수 없습니다
해결 방법 2

const Layer = require('express/lib/router/layer');
Object.defineProperty(Layer.prototype, 'handle', {
  enumerable: true,
  get() {
    return this.__handle;
  },
  set(fn) {
    if (fn.length === 4) {
      this.__handle = fn;
    } else {
      this.__handle = (req, res, next) =>
        Promise.resolve()
          .then(() => fn(req, res, next))
          .catch(next);
    }
  },
});


해결 방법 3
express-async-errors를 설치합니다. 맞아요. 이미 express가 Promise를 포획하지 못하는 이상을 참지 못하고 해독 패키지를 만들었어요.
소재지https://github.com/davidbanham/express-async-errors

npm install express-async-errors --save

사용

var express = require('express');
require('express-async-errors');


본문에서 서술한 것이 모두에게 node가 되기를 바란다.js 프로그램 설계가 도움이 되었습니다.

좋은 웹페이지 즐겨찾기