最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodeJs編寫錯誤處理中間件問題

 更新時間:2022年12月03日 15:18:00   作者:你的美,讓我癡迷  
這篇文章主要介紹了nodeJs編寫錯誤處理中間件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

nodeJs編寫錯誤處理中間件

app.use(async(ctx, next) => {
    try {
        await next();
    } catch (err) {
        console.log(err, "錯誤機(jī)制");
        ctx.status = err.status || err.statusCode;
        ctx.body = {
            message: err.message
        };
    }
})

koa-json-error 處理錯誤機(jī)制:

const koajsonerror = require("koa-json-error");
app.use(koajsonerror({
? ? postFormat: (err, { stack, ...rest }) => process.env.NODE_ENV === "production" ? rest : { stack, ...rest }
}));

溫馨提示:放在最前面

Connect中間件之錯誤處理中間件

范例

var connect = require('connect');
connect()
	.use(errorHandler())
	.listen(3000);
 
/* 錯誤處理中間件函數(shù)必須接受四個參數(shù):err, req, res和 next */
/* 而常規(guī)的中間件只有三個參數(shù):req,res和next */
/* 當(dāng)Connect遇到錯誤時,它只調(diào)用錯誤處理中間件 */
function errorHandler() {
	var env = process.env.NODE_ENV || 'development';
	return function(err, req, res, next) {
		res.statusCode = 500;
		switch (env) {
			case 'development':
				res.setHeader('Content-Type', 'application/json');
				res.end(JSON.stringify(err));
				break;
			default:
				res.end('Server error');
		}
	}
}

多個錯誤處理中間件組件

var connect = require('connect');
var api = connect()
	.use(users)
	.use(pets)
	.use(errorHandler);
var app = connect()
	.use(hello)
	.use('/api', api)
	.use(noPage)
	.use(errorPage)
	.listen(3000);
 
 
// hello 中間件組件
function hello(req, res, next) {
	if (req.url.match(/^\/hello/)) {
		res.end('Hello World\n');
	} else {
		next();
	}
}
 
// users 中間件組件
var db = {
	users: [
		{name: 'tobi'},
		{name: 'loki'},
		{name: 'jane'}
	]
};
function users(req, res, next) {
	var match = req.url.match(/^\/user\/(.+)/);
	if (match) {
		var user = db.users[match[1]];
		if (user) {
			res.setHeader('Content-Type', 'application/json');
			res.end(JSON.stringify(user));
		} else {
			var err = new Error('User not found');
			err.notFound = true;
			next(err);
		}
	} else {
		next();
	}
}
 
// pets 中間件組件
function pets(req, res, next) {
	if (req.url.match(/^\/pet\/(.+)/)) {
		foo();
	} else {
		next();
	}
}
 
// errorHandler 錯誤處理中間件組件
function errorHandler(err, req, res, next) {
	console.error(err.stack);
	res.setHeader('Content-Type', 'application/json');
	if (err.notFound) {
		res.statusCode = 404;
		res.end(JSON.stringify({error: err.message}));
	} else {
		res.statusCode = 500;
		res.end(JSON.stringify({error: 'Internal Server Error'}));
	}
}
 
// noPage 中間件組件
function noPage(req, res, next) {
	res.statusCode = 404;
	res.end('Not Found');
}
 
// errorPage 錯誤處理中間件組件
function errorPage(err, req, res, next) {
	res.end('Impossible');
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • node.js中的console.warn方法使用說明

    node.js中的console.warn方法使用說明

    這篇文章主要介紹了node.js中的console.warn方法使用說明,本文介紹了console.warn的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 安裝nvm并使用nvm安裝nodejs及配置環(huán)境變量的全過程

    安裝nvm并使用nvm安裝nodejs及配置環(huán)境變量的全過程

    有時候使用nvm管理node會發(fā)現(xiàn)無法使用node或npm,主要原因是環(huán)境變量沒有配置成功,下面這篇文章主要給大家介紹了關(guān)于安裝nvm并使用nvm安裝nodejs及配置環(huán)境變量的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Node.js連接MySQL數(shù)據(jù)庫的操作步驟

    Node.js連接MySQL數(shù)據(jù)庫的操作步驟

    在現(xiàn)代 Web 開發(fā)中,與數(shù)據(jù)庫的交互是不可避免的一部分,Node.js提供了許多庫和模塊,使得連接和操作 MySQL 數(shù)據(jù)庫變得相對簡單,本文將介紹如何使用Node.js連接MySQL數(shù)據(jù)庫,并進(jìn)行一些基本的操作,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 微信小程序搭載node.js服務(wù)器的簡單教程

    微信小程序搭載node.js服務(wù)器的簡單教程

    小程序是一種全新的連接用戶與服務(wù)的方式,它可以在微信內(nèi)被便捷地獲取和傳播,同時具有出色的使用體驗,下面這篇文章主要給大家介紹了關(guān)于微信小程序搭載node.js服務(wù)器的簡單教程,需要的朋友可以參考下
    2022-12-12
  • Node.js zlib模塊之屬性、方法及使用示例詳解

    Node.js zlib模塊之屬性、方法及使用示例詳解

    zlib模塊是Node.js中用于數(shù)據(jù)壓縮和解壓縮的強(qiáng)大工具,它提供了多種壓縮算法和靈活的使用方式,包括Deflate、Gzip等,廣泛用于網(wǎng)絡(luò)傳輸和文件存儲中以減少數(shù)據(jù)大小,提高性能,本文給大家介紹Node.js zlib模塊屬性、方法及使用示例,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • NodeJS實現(xiàn)客戶端js加密

    NodeJS實現(xiàn)客戶端js加密

    本文主要介紹了NodeJS實現(xiàn)客戶端js加密的思路與方法,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • nodejs實現(xiàn)發(fā)出蜂鳴聲音(系統(tǒng)報警聲)的方法

    nodejs實現(xiàn)發(fā)出蜂鳴聲音(系統(tǒng)報警聲)的方法

    這篇文章主要介紹了nodejs實現(xiàn)發(fā)出蜂鳴聲音(系統(tǒng)報警聲)的方法,結(jié)合實例形式分析了nodejs發(fā)出蜂鳴聲的原理及具體應(yīng)用方法,需要的朋友可以參考下
    2017-01-01
  • Node.js制作簡單聊天室

    Node.js制作簡單聊天室

    這篇文章主要為大家詳細(xì)介紹了Node.js制作簡單聊天室的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 詳解Node.js項目APM監(jiān)控之New Relic

    詳解Node.js項目APM監(jiān)控之New Relic

    本篇文章主要介紹了Node.js項目APM監(jiān)控之New Relic,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Node.js事件的正確使用方法

    Node.js事件的正確使用方法

    這篇文章主要給大家介紹了關(guān)于Node.js事件的正確使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Node.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論

凤山县| 湟源县| 澄江县| 海门市| 什邡市| 漠河县| 镇远县| 玉溪市| 延庆县| 裕民县| 陇川县| 固始县| 阳泉市| 泰州市| 和田市| 平顶山市| 昌乐县| 嵊州市| 乌拉特中旗| 长沙县| 鄂州市| 炎陵县| 合川市| 永春县| 屏山县| 望都县| 阳高县| 镇江市| 新营市| 紫金县| 嘉兴市| 蚌埠市| 石河子市| 姜堰市| 黑水县| 上蔡县| 启东市| 科技| 信阳市| 柳林县| 茂名市|