Fork me on GitHub

Express全局的错误处理

一般错误处理

app.use((err, req, res, next) => { const statusCode = err.statusCode || 500; console.error(new Date().toLocaleString(), req.originalUrl, statusCode, err.message, err.stack); return res.status(statusCode).json({ 'message': err.message }); });

UnhandledPromiseRejectionWarning 异常处理

  • 安装组件

npm i express-async-errors

  • 修改index.js文件
const express = require('express') require('express-async-errors'); //在app.listen(server.port之前添加上面的全局错误处理

以下代码是无法通过上面方式进行捕获的

原代码

const request = require('request'); exports.testerror = async (req, res) => { let testPromise = test(req, res, "https://baidu.com") let headers; headers = await testPromise; res.status(200).send(headers); } function test (req, res, url) { const options = { 'method': 'GET', 'url': url }; return new Promise((resolve, reject) => { request(options, function (error, response) { if (error) { reject(error); } else { // 此处cookies为undefined let cookies = response.headers['FSDFSFSS']; let cookieHeaders = [] // 这儿将报异常 cookies.forEach(cookie => { console.log("cookie: ", cookie); cookieHeaders.push(cookie.split(';')[0]) }) resolve(cookieHeaders); } }) }) }

无赖我只能将request的回调函数中的逻辑提至返回结果后,详细看下面代码

修改后代码

exports.testerror = async (req, res) => { let testPromise = test(req, res, "https://baidu.com") let headers; headers = await testPromise; // ***************被移动的代码************************** console.log("cookie: ", headers); let cookies = headers['FSDFSFSS']; let cookieHeader = [] cookies.forEach(cookie => { console.log("cookie: ", cookie); cookieHeaders.push(cookie.split(';')[0]) }) // ***************被移动的代码************************** res.status(200).send(cookieHeader); } function test (req, res, url) { const options = { 'method': 'GET', 'url': url }; return new Promise((resolve, reject) => { request(options, function (error, response) { if (error) { reject(error); } else { resolve(response.headers); } }) }) }

这种方法虽不是最好,但解决了我的问题,不知名位是否有更好的解决方法


__EOF__

本文作者逍遥メ风
本文链接https://www.cnblogs.com/bjxly/p/17108302.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   逍遥メ风  阅读(214)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示