본문 바로가기
Web/Nodejs

[Node.js] 파일 읽기 오류처리 - 동기식 & 비동기식, 서버에러 처리

by coding-choonsik 2023. 4. 30.
728x90
반응형
SMALL

✅ 파일이 없는 경우 에러가 발생 ➡️ 오류처리 방법 4가지 알아보기!

import express from 'express'
import fs from 'fs'
import fsAsync from 'fs/promises'  //promise객체임

const app = express();

app.use(express.json());

 

1️⃣ readFile(): 비동기식 파일읽기 오류처리

app.get('/file1', (req, res) => {
    fs.readFile('./file1.txt', (err, data)=> {
        if(err){
            //res.status().send()와 같이 동작하지만, 코드와 상태 메시지를 한 번에 설정할 수 있다는 점에서 차이가 있음
            res.sendStatus(404)  // 페이지가 없음을 보냄 (Not Found)
        }
    })
})
app.listen(9090)

 

2️⃣ readFileSync(): 동기식으로 파일을 읽어옴 ➡ 'try-catch'블록 사용

 

app.get('/file2', (req, res) => {
    try{
        const data = fs.readFileSync('./file2.txt')
    }catch(error){
        res.sendStatus(404)
    }
})
app.listen(9090)


3️⃣ fsAsync  readFile(): 비동기식 파일 읽기 

app.get('/file3', (req, res) => {
    fsAsync
        .readFile('/file3.txt')
        .catch((error) => {
            res.sendStatus(404)
        })
})
app.listen(9090)

 

4️⃣ 동기식문법을 사용하여 비동기 처리  ➡ 'try-catch'블록 사용

app.get('/file4', async (req, res) => {
    try{
        const data = await fsAsync.readFile('/file4.txt')
    }catch(error){
        res.sendStatus(404)
    }
})

app.listen(9090)

 ✅서버 에러 처리

app.use((error, req, res, next) => {
    console.error(error)
    res.status(500).join({message: '서버 에러!'})  // 500번대: 서버에러(서버에러는 최후의 수단으로 나오는것이고 미들웨어로 404번으로 처리해주는것이 통상적)
})

app.listen(9090)

 

 

728x90
반응형
LIST

'Web > Nodejs' 카테고리의 다른 글

[Node.js] router 2️⃣  (0) 2023.04.30
[Node.js] router 1️⃣  (0) 2023.04.30
[Node.js] express - 2️⃣ post()  (0) 2023.04.30
[Node.js] express - 1️⃣get()  (0) 2023.04.30
[Node.js] REST API - express 프레임워크  (0) 2023.04.30