node.js的错误处理

当我打开一个不存在的文件时,错误如下:

在读取文件里面写入console.log(err),在控制台中可以看到我的错误代码类型:文件不存在的错误代码 'ENOENT'。见更多错误代码---打开node.js官方API文档Error 错误 | Node.js v20 文档 (nodejs.cn),点击error错误这个模块,查看不同的错误码

故,我们可以根据不同的代码做一个错误判断:

以前面写过的获取静态资源代码为例:见http://t.csdnimg.cn/y9zIM

四种常见错误处理:

javascript 复制代码
//以获取静态资源的代码为例:
// 1.导入http模块
const http = require('http');
const fs = require('fs');
// 2.创建服务对象
const server = http.createServer((request, response) => {
    // (3)错误3:当请求不是get请求而是一个post请求时:
    if(request.method !== 'GET'){
        response.statusCode=406;
        response.end('<h1>406 请求错误</h1>');
        return;
    }
    // 获取请求url路径
    let { pathname } = new URL(request.url, 'http://127.0.0.1');
    // 拼接文件路径
    let filePath = __dirname + pathname;
    // 注意:如果我不单单想局限于读取pages文件夹下的内容,若我想读取我的大文件夹my下的任何文件,就设置let filePath=__dirname+pathname; 注意,读取的文件名不能以中文命名。否则会报错
    // 读取文件 fs异步API
    fs.readFile(filePath, (err, data) => {
        if (err) {
            response.setHeader('content-type', 'text/html;charset=utf-8'); //设置字符集
            // console.log(err);//当我在浏览器打开一个不存在的文件222.html时,会提示错误并且错误代码显示"ENOENT"。所以我们可以使用不同的错误代码进行一个错误分类判断
            // 利用switch分支结构进行错误的代号判断
            // 注意:当我不知道err.code的错误代码eg:EPERM是什么意思时,打开node.js官方API文档,点击error错误这个模块,ctrl+F去搜索对应的错误码
            switch (err.code) {
                // (1)错误1:我在浏览器打开一个不存在的文件222.html
                case 'ENOENT':
                    response.statusCode = 404; //设置响应状态码
                    response.end('<h1>404 Not Found</h1>');//设置响应体
                // (2)错误2:我将要打开的文件在它的安全属性里修改了它的权限-不允许被读取时
                case 'EPERM':
                    response.statusCode = 405; //设置响应状态码
                    response.end('<h1>405 Forbidden</h1>');//设置响应体
                    // (4)错误4:未知错误
                    default:
                    response.statusCode=407;
                    response.end('<h1>407 服务器内部错误</h1>');//设置响应体
            } 
            return;
        }
        response.end(data);
    })
})
// 3.监听端口,启动服务
server.listen(9000, () => {
    console.log('服务已启动...');
})

错误一形式:

相关推荐
风尘小子3 天前
node.js系列:process配置
前端·node.js
怕浪猫3 天前
ZCode 开源了来看看这是个什么东西
node.js·github·代码规范
flash俊杰4 天前
Electron 打包后窗口 30 秒不出现:一个 ABI 不匹配的血案
electron·node.js
@tangguo1234 天前
npm 和 yarn 配置说明
前端·javascript·npm·node.js·yarn
flash俊杰4 天前
一套代码接入所有大模型:OpenAI 兼容适配器设计
node.js·openai
右耳朵猫AI4 天前
Node.js周刊2026W38 | 进程中断缺陷修复、Copilot 迁至 Rust、Node 新增 VFS
javascript·后端·node.js
光影少年5 天前
Express 中间件原理
后端·node.js·express
时速GEO系统5 天前
初元 AI V1.1 版本升级,首个正式版发布一周・实现生成、部署、上线、优化全流程自动化闭环
人工智能·数据挖掘·node.js
console.log('npc')5 天前
06 — Model 层:数据模型与操作
前端·后端·node.js·express