做設(shè)計(jì)需要素材的常用網(wǎng)站有哪些只要做好關(guān)鍵詞優(yōu)化
當(dāng)我打開(kāi)一個(gè)不存在的文件時(shí),錯(cuò)誤如下:
在讀取文件里面寫(xiě)入console.log(err),在控制臺(tái)中可以看到我的錯(cuò)誤代碼類型:
文件不存在的錯(cuò)誤代碼 'ENOENT'。見(jiàn)更多錯(cuò)誤代碼---打開(kāi)node.js官方API文檔Error 錯(cuò)誤 | Node.js v20 文檔 (nodejs.cn),點(diǎn)擊error錯(cuò)誤這個(gè)模塊,查看不同的錯(cuò)誤碼
故,我們可以根據(jù)不同的代碼做一個(gè)錯(cuò)誤判斷:
以前面寫(xiě)過(guò)的獲取靜態(tài)資源代碼為例:見(jiàn)http://t.csdnimg.cn/y9zIM
四種常見(jiàn)錯(cuò)誤處理:
//以獲取靜態(tài)資源的代碼為例:
// 1.導(dǎo)入http模塊
const http = require('http');
const fs = require('fs');
// 2.創(chuàng)建服務(wù)對(duì)象
const server = http.createServer((request, response) => {// (3)錯(cuò)誤3:當(dāng)請(qǐng)求不是get請(qǐng)求而是一個(gè)post請(qǐng)求時(shí):if(request.method !== 'GET'){response.statusCode=406;response.end('<h1>406 請(qǐng)求錯(cuò)誤</h1>');return;}// 獲取請(qǐng)求url路徑let { pathname } = new URL(request.url, 'http://127.0.0.1');// 拼接文件路徑let filePath = __dirname + pathname;// 注意:如果我不單單想局限于讀取pages文件夾下的內(nèi)容,若我想讀取我的大文件夾my下的任何文件,就設(shè)置let filePath=__dirname+pathname; 注意,讀取的文件名不能以中文命名。否則會(huì)報(bào)錯(cuò)// 讀取文件 fs異步APIfs.readFile(filePath, (err, data) => {if (err) {response.setHeader('content-type', 'text/html;charset=utf-8'); //設(shè)置字符集// console.log(err);//當(dāng)我在瀏覽器打開(kāi)一個(gè)不存在的文件222.html時(shí),會(huì)提示錯(cuò)誤并且錯(cuò)誤代碼顯示“ENOENT”。所以我們可以使用不同的錯(cuò)誤代碼進(jìn)行一個(gè)錯(cuò)誤分類判斷// 利用switch分支結(jié)構(gòu)進(jìn)行錯(cuò)誤的代號(hào)判斷// 注意:當(dāng)我不知道err.code的錯(cuò)誤代碼eg:EPERM是什么意思時(shí),打開(kāi)node.js官方API文檔,點(diǎn)擊error錯(cuò)誤這個(gè)模塊,ctrl+F去搜索對(duì)應(yīng)的錯(cuò)誤碼switch (err.code) {// (1)錯(cuò)誤1:我在瀏覽器打開(kāi)一個(gè)不存在的文件222.htmlcase 'ENOENT':response.statusCode = 404; //設(shè)置響應(yīng)狀態(tài)碼response.end('<h1>404 Not Found</h1>');//設(shè)置響應(yīng)體// (2)錯(cuò)誤2:我將要打開(kāi)的文件在它的安全屬性里修改了它的權(quán)限-不允許被讀取時(shí)case 'EPERM':response.statusCode = 405; //設(shè)置響應(yīng)狀態(tài)碼response.end('<h1>405 Forbidden</h1>');//設(shè)置響應(yīng)體// (4)錯(cuò)誤4:未知錯(cuò)誤default:response.statusCode=407;response.end('<h1>407 服務(wù)器內(nèi)部錯(cuò)誤</h1>');//設(shè)置響應(yīng)體} return;}response.end(data);})
})
// 3.監(jiān)聽(tīng)端口,啟動(dòng)服務(wù)
server.listen(9000, () => {console.log('服務(wù)已啟動(dòng)...');
})