Express错误处理-用于生产和开发的中间件

Express错误处理-用于生产和开发的中间件

错误处理 是在程序或应用程序执行过程中检测和响应发生的错误的过程。在Web应用程序的上下文中,错误处理通常涉及检测在处理HTTP请求过程中发生的错误并适当地响应这些错误。有效的错误处理很重要,因为它可以帮助改善应用程序的可靠性和可用性。

Express 提供了中间件函数,用于处理在处理HTTP请求过程中发生的错误。这些中间件函数被添加到应用程序的中间件堆栈中,并在处理请求时发生错误时执行。

语法:

function errorHandler(err, req, res, next) {
     // error handling code goes here
}

在生产中的错误处理: 设置项目。

步骤1: 为我们的项目创建一个目录,并将其设置为我们的工作目录。

$ mkdir gfg
$ cd gfg 

步骤2: 使用npm init命令为我们的项目创建一个package.json文件。

npm init -y

步骤3: 现在安装Express。

npm i express

在这个示例中,我们定义了一个错误处理中间件函数,它将错误日志记录到控制台,并发送一个带有内部服务器错误状态码 500 的通用错误消息给客户端。我们还为根URL定义了一个路由处理程序,它只向客户端发送一个“Hello World!”的消息。为了测试错误处理中间件,我们故意添加了一个抛出错误的路由处理程序。

const express = require("express"); 
const app = express(); 
  
// Production error handling middleware 
app.use(function (err, req, res, next) { 
    console.error(err); 
    res.status(500).send("Internal Server Error"); 
}); 
  
// Route handlers 
app.get("/", function (req, res) { 
    res.send("Hello World!"); 
}); 
app.get("/error", function (req, res) { 
    throw new Error("Something went wrong!"); 
}); 
  
// Start the server 
const port = process.env.PORT || 3000; 
app.listen(port, function () { 
    console.log(`Server listening on port ${port}`); 
}); 

运行代码的步骤:

步骤 1: 在终端中运行以下代码:

node index.js

步骤 2: 现在创建一个向“localhost:3000/error”发送GET请求来获取错误。您可以使用Postman或在任何Web浏览器中编写URL。

输出:

Express错误处理-用于生产和开发的中间件

生产环境中的错误处理: 在这个示例中,我们定义了一个错误处理中间件函数,它将错误堆栈跟踪记录到控制台并使用500内部服务器错误状态代码将堆栈跟踪发送给客户端。我们还添加了一个检查,确保只有在开发模式下才使用此错误处理中间件。为了测试错误处理中间件,我们故意添加了一个抛出错误的路由处理程序。

const express = require("express"); 
const app = express(); 
  
// Development error handling middleware 
if (app.get("env") === "development") { 
    app.use(function (err, req, res, next) { 
        console.error(err.stack); 
        res.status(500).send(`<pre>{err.stack}</pre>`); 
    }); 
} 
  
// Route handlers 
app.get("/", function (req, res) { 
    res.send("Hello World!"); 
}); 
app.get("/error", function (req, res) { 
    throw new Error("Something went wrong!"); 
}); 
  
// Start the server 
const port = process.env.PORT || 3000; 
app.listen(port, function () { 
    console.log(`Server listening on port{port}`); 
});

运行代码的步骤:

步骤1: 在终端中运行以下代码:

node index.js

步骤2: 现在创建一个“localhost:3000/error”的GET请求来获取错误。您可以使用Postman或在任何Web浏览器中写入URL。

输出:

Express错误处理-用于生产和开发的中间件

生产环境和开发环境中Express错误处理中间件的区别:

对比项 生产环境 开发环境
错误响应 通用错误信息 包含堆栈跟踪的详细错误信息
错误日志记录 有限的日志记录,例如控制台 广泛的日志记录,例如控制台、文件或服务
错误调试 有限的调试 包含堆栈跟踪的广泛调试
错误显示 用户友好的错误页面 技术错误信息或堆栈跟踪
错误信息 有限的信息 详细信息,例如请求详情
错误处理时间 最小化停机时间 最大化调试时间
中间件使用 标准中间件 基于NODE_ENV的条件中间件

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程