欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node.js express捕獲全局異常的三種方法實(shí)例分析

 更新時(shí)間:2019年12月27日 08:45:03   作者:雪山飛豬  
這篇文章主要介紹了node.js express捕獲全局異常的三種方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了node.js express捕獲全局異常的常見(jiàn)操作方法與使用注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了node.js express捕獲全局異常的三種方法。分享給大家供大家參考,具體如下:

場(chǎng)景

express的路由里拋出異常后,全局中間件沒(méi)辦法捕獲,需要在所有的路由函數(shù)里寫(xiě)try catch,這坑爹的邏輯讓人每次都要多寫(xiě)n行代碼

官方錯(cuò)誤捕獲中件間代碼如下

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

測(cè)試證明客戶(hù)端已經(jīng)卡死,沒(méi)有返回結(jié)果

解決方法一

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

雖然可以捕獲,在命令行有輸出,但是沒(méi)辦法給客戶(hù)端返回錯(cuò)誤了

解決方法二

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,沒(méi)錯(cuò),已經(jīng)有人受不了express不能捕獲Promise異常搞了個(gè)破解包

地址https://github.com/davidbanham/express-async-errors

npm install express-async-errors --save

使用

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

希望本文所述對(duì)大家node.js程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • nodejs+mysql實(shí)現(xiàn)用戶(hù)相關(guān)的增刪改查的詳細(xì)操作

    nodejs+mysql實(shí)現(xiàn)用戶(hù)相關(guān)的增刪改查的詳細(xì)操作

    這篇文章主要介紹了nodejs+mysql實(shí)現(xiàn)用戶(hù)相關(guān)的增刪改查的詳細(xì)操作的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Node.js 使用request模塊下載文件的實(shí)例

    Node.js 使用request模塊下載文件的實(shí)例

    今天小編就為大家分享一篇Node.js 使用request模塊下載文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • nodejs結(jié)合Socket.IO實(shí)現(xiàn)websocket即時(shí)通訊

    nodejs結(jié)合Socket.IO實(shí)現(xiàn)websocket即時(shí)通訊

    websocket 是一種網(wǎng)絡(luò)通信協(xié)議,一般用來(lái)進(jìn)行實(shí)時(shí)通信會(huì)使用到。本文主要介紹了nodejs結(jié)合Socket.IO實(shí)現(xiàn)websocket即時(shí)通訊 ,感興趣的可以了解一下
    2021-11-11
  • 基于socket.io和node.js搭建即時(shí)通信系統(tǒng)

    基于socket.io和node.js搭建即時(shí)通信系統(tǒng)

    socket.IO是一個(gè)websocket庫(kù),包括了客戶(hù)端的js和服務(wù)器端的nodejs。官方地址:http://socket.io
    2014-07-07
  • NodeJS中配置請(qǐng)求代理服務(wù)器方式

    NodeJS中配置請(qǐng)求代理服務(wù)器方式

    這篇文章主要介紹了NodeJS中配置請(qǐng)求代理服務(wù)器方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 從零揭秘npm install的黑科技

    從零揭秘npm install的黑科技

    通過(guò)npm package manager來(lái)安裝和管理包是我們最為常見(jiàn)的方式之一,本文將從淺入深地帶大家剖析一下npm install的執(zhí)行過(guò)程,感興趣的可以學(xué)習(xí)一下
    2023-05-05
  • 利用PM2部署node.js項(xiàng)目的方法教程

    利用PM2部署node.js項(xiàng)目的方法教程

    pm2 = P (rocess) M (anager)2,是可以用于生產(chǎn)環(huán)境的Nodejs的進(jìn)程管理工具,并且它內(nèi)置一個(gè)負(fù)載均衡。下面這篇文章主要給大家介紹了利用PM2部署node.js項(xiàng)目的方法教程,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-05-05
  • 用NODE.JS中的流編寫(xiě)工具是要注意的事項(xiàng)

    用NODE.JS中的流編寫(xiě)工具是要注意的事項(xiàng)

    Nodejs讀寫(xiě)流流的傳輸過(guò)程默認(rèn)是以buffer的形式傳輸?shù)?除非你給他設(shè)置其他編碼形式, 小伙伴可以參考下。
    2016-03-03
  • 關(guān)于node-bindings無(wú)法在Electron中使用的解決辦法

    關(guān)于node-bindings無(wú)法在Electron中使用的解決辦法

    今天小編就為大家分享一篇關(guān)于關(guān)于node-bindings無(wú)法在Electron中使用的解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Windows系統(tǒng)下使用Sublime搭建nodejs環(huán)境

    Windows系統(tǒng)下使用Sublime搭建nodejs環(huán)境

    最近在研究Nodejs開(kāi)發(fā),俗話(huà)說(shuō),工欲善其事,必先利其器,當(dāng)然要找到一款用著順手的編輯器作為開(kāi)始。這里我們選擇的是Sublime Text 3,除了漂亮的用戶(hù)界面,最吸引我的就是它的插件擴(kuò)展功能以及跨平臺(tái)特性。
    2015-04-04

最新評(píng)論