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('服务已启动...');
})

错误一形式:

相关推荐
垣宇19 小时前
Vite 和 Webpack 的区别和选择
前端·webpack·node.js
爱吃南瓜的北瓜19 小时前
npm install 卡在“sill idealTree buildDeps“
前端·npm·node.js
翻滚吧键盘19 小时前
npm使用了代理,但是代理软件已经关闭导致创建失败
前端·npm·node.js
浪九天20 小时前
node.js的版本管理
node.js
浪九天1 天前
node.js的常用指令
node.js
浪九天1 天前
Vue 不同大版本与 Node.js 版本匹配的详细参数
前端·vue.js·node.js
小纯洁w1 天前
Webpack 的 require.context 和 Vite 的 import.meta.glob 的详细介绍和使用
前端·webpack·node.js
熬夜不洗澡2 天前
Node.js中不支持require和import两种导入模块的混用
node.js
bubusa~>_<2 天前
解决npm install 出现error,比如:ERR_SSL_CIPHER_OPERATION_FAILED
前端·npm·node.js
天下皆白_唯我独黑2 天前
npm 安装扩展遇到证书失效解决方案
前端·npm·node.js