node.js express 전역 이상 포획 3가지 방법 실례 분석
장면
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 프로그램 설계가 도움이 되었습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.