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://hxwzsj.com/article/pegcgs.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 企业网站设计 营销型网站建设 成都营销网站制作 成都网站设计 网站设计制作 定制网站建设 高端网站建设 商城网站建设 网站设计制作报价 成都网站制作 专业网站设计 响应式网站设计 成都企业网站制作 专业网站设计 成都h5网站建设 成都网站制作 移动网站建设 成都网站建设公司 成都网站制作 广安网站设计 成都网站制作 重庆企业网站建设