fs모듈로 html 파일을 읽어 제공하기

김무연·2023년 12월 13일

Backend

목록 보기
26/49

이전의 코드

const http = require('http');

const server = http.createServer((req, res) => {
  res.write('<h1>Hello Node!</h1>');
  res.write('<p>Hello server</p>');
  res.end('<p>Hello mm</p>');
})
  .listen(8080)
server.on('listening', () => {
  console.log('8080번 포트에서 서버 대기 중입니다.')
})
server.on('error', (err) => {
  console.error(err)
})

위에서 자동으로 h1, p 등을 html 코드로 인식 못하는 브라우저가 몇 존재한다. 따라서 이러한 경우 html이라는 것을 알려줘야 한다

  res.writeHead(200, { 'Content-Type' : 'text/html; charset=utf-8'});

html 읽어서 전송하기

위처럼 write, end로 직접 문자열을 넣어서 하는 것은 너무 비효율 적

  • fs 모듈로 html 파일을 읽어서 전송하기 가능
  • write가 버퍼도 전송 가능
const http = require('http');
const fs = require('fs').promises;

const server = http.createServer(async (req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
  const data = await fs.readFile('/ch08/index.html')
  res.end(data)
})
  .listen(8080)
server.on('listening', () => {
  console.log('8080번 포트에서 서버 대기 중입니다.')
})
server.on('error', (err) => {
  console.error(err)
})

마지막으로 try catch문으로 예외 처리 까지 해주면 된다

const http = require('http');
const fs = require('fs').promises;

const server = http.createServer(async (req, res) => {
  try {
    res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
    const data = await fs.readFile('/ch08/index.html')
    res.end(data)
  } catch (error) {
    console.error(error)
    res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
    res.end(error.message)
  }
})
  .listen(8080)
server.on('listening', () => {
  console.log('8080번 포트에서 서버 대기 중입니다.')
})
server.on('error', (err) => {
  console.error(err)
})
profile
Notion에 정리된 공부한 글을 옮겨오는 중입니다... (진행중)

0개의 댓글