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

故,我们可以根据不同的代码做一个错误判断:
以前面写过的获取静态资源代码为例:见http://t.csdnimg.cn/y9zIM
- //以获取静态资源的代码为例:
- // 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('
406 请求错误
'); - 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('
404 Not Found
');//设置响应体 - // (2)错误2:我将要打开的文件在它的安全属性里修改了它的权限-不允许被读取时
- case 'EPERM':
- response.statusCode = 405; //设置响应状态码
- response.end('
405 Forbidden
');//设置响应体 - // (4)错误4:未知错误
- default:
- response.statusCode=407;
- response.end('
407 服务器内部错误
');//设置响应体 - }
- return;
- }
- response.end(data);
- })
- })
- // 3.监听端口,启动服务
- server.listen(9000, () => {
- console.log('服务已启动...');
- })
