node.js中怎么利用express捕获全局异常
这期内容当中小编将会给大家带来有关node.js中怎么利用express捕获全局异常,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

成都创新互联2013年至今,先为林芝等服务建站,林芝等地企业,进行企业商务咨询服务。为林芝企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
场景
express的路由里抛出异常后,全局中间件没办法捕获,需要在所有的路由函数里写try catch,这坑爹的逻辑让人每次都要多写n行代码
官方错误捕获中件间代码如下
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});测试证明客户端已经卡死,没有返回结果
解决方法一
process.on('uncaughtException', function(err) {
console.log('Caught exception: ' + err);
});虽然可以捕获,在命令行有输出,但是没办法给客户端返回错误了
解决方法二
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);
}
},
});解决方法三
安装express-async-errors,没错,已经有人受不了express不能捕获Promise异常搞了个破解包
npm install express-async-errors --save
使用
var express = require('express');
require('express-async-errors');上述就是小编为大家分享的node.js中怎么利用express捕获全局异常了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
当前文章:node.js中怎么利用express捕获全局异常
网页链接:http://www.jxjierui.cn/article/pegcgs.html


咨询
建站咨询
