오늘은 express 로 서버 구축하기!
근데 하나 궁금증이 생겼다.. ESM 방식에 속해있는 모듈이 express인건가?
ESM 방식은 그냥 express 모듈을 쓰는 걸 말하는 건가?
다른 전문가들 입장에서는 바보같은 질문이라고 생각할 수 있지만 ㅜㅜ
그치만 궁금한걸... 여튼 여기저기 검색중이니 알아보는데로 글 수정하겠다..!!
express는 가장 많이 사용하는 프레임워크라고 한다!!
express 는 미들웨어의 연결로 보면 편한데, 서버 요청이 들어오면 여러 미들웨어의 수행을 거쳐서 응답이 이루어진다!
import express from 'express';
const app = express();
// middleware
app.listen(3000, () =>{
console.log('Server is running');
});
코드는 이렇게 !
express 모듈을 import 하여 사용한다.
그리고 app 이라는 객체를 만들어 express 를 할당해주었다.
app.listen 부분은 전과 동일!
import express from 'express';
import path from 'path';
const __dirname = path.resolve();
const app = express();
//middleware
// main page GET
app.get('/', (req, res) => {
//res.send('Main page GET request');
//res.send('<h1>Hello Main page</h1>');
/*res.send(`
<h1>H1</h1>
<h2>H2</h2>
`)
*/
res.sendFile(__dirname + '/public/main.html')
})
app.listen(3000, () =>{
console.log('Server is running');
});
서버 구축하고, 파일을 전송하는 코드는 위와 같다.
이 부분을 한 줄 씩 보자!
import express from 'express';
import path from 'path';
const __dirname = path.resolve();
res.sendFile(__dirname + '/public/main.html') 부분에서 dirname을 사용하려면 path 모듈을 import 해줘야 하므로 코드는 위처럼 구성한다.
const app = express();
app 이라는 객체를 만들어 express 를 할당해주었다.
//main page GET 부분에서는
res.send('Main page GET request');
이렇게 기본적인 방법으로 페이지를 구성하여 보낼 수도 있고,
res.send('<h1>Hello Main page</h1>');
화면을 표현해줄 때 html을 사용하는데, 위와 같이 html 코드를 통해 화면을 전송해줄 수 있다.

이때 여러줄을 한꺼번에 보내고 싶다면!
res.send(`
<h1>H1</h1>
<h2>H2</h2>
`);
이렇게 작성해주면

이렇게 메인 페이지에 작성된다 !
res.sendFile(__dirname + '/public/main.html')
다음은 dirname을 사용하는 코드이다.
html 파일을 사용하는 방법인데
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Main page</title>
</head>
<body>
<h1>Main page</h1>
</body>
</html>
! 을 작성하면 나오는 기본 코드를 사용했다.
이렇게 오늘은 서버에서 파일을 전송하는 방법까지 공부했다. 하다가 생긴 오류가 있었는데 도움이 될까하여 같이 첨부한다.
node:events:497 throw er; // Unhandled 'error' event
터미널에서 실행하는 중에 이런 오류가 있어 헤맸는데, 위 링크를 첨부한 블로그를 보고 해결할 수 있었다.
기존의 node.js가 계속 실행되지 않아 충돌해서 생기는 문제라고 한다!
필요한 분들은 참고하시길!
나는 그럼 이만.. 🐜🐜🐜