inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js 교과서 - 기본부터 프로젝트 실습까지

미들웨어 이해하기

간단한 미들웨어를 만들어봤는데 에러가 발생합니다.

679

자린이

작성한 질문수 7

0

처음에 root로 접속하면 hello를 응답하고 next()와 if문을 통해 50%의 확률로 다음 미들웨어로 이동하는 간단한 게임을 만들어봤습니다.

const express = require('express');

var app = express();

app.use('/', (req, res, next) =>{

res.send('hello');

next();

});

app.use((req, res, next) => {

if (+new Date() % 2 === 0) {

console.log('진행');

res.send('행운은 계속');

next();

} else {

console.log('꽝');

res.send('행운은 1까지 입니다 ㅠ_ㅠ');

}

});

app.use((req, res, next) => {

if (+new Date() % 2 === 0) {

console.log('진행');

res.send('행운은 계속');

next();

} else {

console.log('꽝');

res.send('행운은 2까지 입니다 ㅠ_ㅠ');

}

});

app.listen(3000, () => console.log(`Example!`))

하지만 새로고침을 할 때 마다

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

이런 에러가 발생합니다.

검색해 본 결과 next 이후에는 res.send를 사용할 수 없다는거 같은데 느낌이 잘 와닿지 않습니다.

제 코드에 어떤 문제가 있을까요?

nodejs mysql javascript mongodb

답변 1

1

제로초(조현영)

네 "res.응답메서드"는 한 번만 쓸 수 있습니다. res.send 후에 next()를 하면 다음 미들웨어에서 또 res.send를 하게 됩니다. next를 할 거면 next만 하고, res.send를 할 거면 더는 next를 호출해서는 안 됩니다.

실제 서비스에서도 cluster를 사용하나요?

1

314

2

캐싱에 관하여

0

279

3

salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?

0

347

1

게시물 올리기 오류

0

408

1

캐슁 이후 로그인창

0

266

1

kakao passport 질문있습니다.

0

493

3

global객체 공유 질문드립니다.

1

418

1

서버가 죽어버리네요

0

1047

8

포링키 문제..

0

235

2

커넥션 플래시 설치문제

0

216

2

익스프레스 제너레이터? 설치문제

0

2586

6

redis 질문입니다.

0

305

1

9장 세션을 DB에 저장시 리다이렉션 오류 발생

0

874

8

프레임워크 선택에 관하여 질문이 있습니다.

0

300

3

시퀄라이즈 질문입니다 ! !

0

588

1

리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문

0

922

6

oAuth 질문입니다.

0

356

3

GCP 질문입니다.

0

366

1

Passport 모듈 로그인 구현관련

0

720

6

카카오 로그인 관련 질문입니다!!

0

606

4

스스로 해보기 10-16 nunjuncks 질문있습니다

0

499

5

제로초님 HTTP 완벽가이드 추천해주신거 너무 잘 읽었습니다.

0

317

2

gif채팅방 nunjucks관련 질문입니다!

0

338

3

현영님 몽고db관련 질문입니다.

0

233

3