인프런 커뮤니티 질문&답변

김수진님의 프로필 이미지

작성한 질문수

Node.js 웹개발로 알아보는 백엔드 자바스크립트의 이해

local-strategy 콜백완성

TypeError: req.flash is not a function

작성

·

920

2

이 에러가 계속떠서 에러위치 찾아보니깐 req.flash사용한 부분에서 에러가 나는데

필요한 모듈설치와 미들웨어 설정도 했는데 왜이런가요?

답변 5

2

저도 같은 에러 발생했습니다. 오타는 아니였고, 강사님 말씀대로 stackoverflow 답변 참고했습니다.

var flash = require('connect-flash'); 

위 코드 아래

app.use(flash()) 사용하니까 문제 해결됐습니다.

2

윤지수님의 프로필 이미지
윤지수
지식공유자

어떤 상황인지 정확히는 모르지만, 여기 답변을 참고해보세요. (두번째 답변을 먼저 확인하시면 좋을거 같네요)

 

https://stackoverflow.com/questions/34310348/passport-and-connect-flash-req-flash-is-not-a-function

 

1

app.use(router); 구문을 다른 app.use() 구문들의 최하단으로 옮겨보세요

이게 왜 되는 지 모르겠습니다. 저의 경우에도 이런 식으로 해결했어요.

스택오버플로우에서는 app.use(flash) 를 좀 더 위로 옮겨라고 하는 데, 자꾸 안되어 답답했어요. 

덕분에 계속하게 될 수 있게 됐습니다. 감사합니다.

0

/* ejs template engine set, ejs 말고도 pug, jade 등이 있다. */
app.set('view engine', 'ejs')
/* middleware strategy 설정 */
app.use(session({
	secret: 'keyboard cat',
	resave: false,
	saveUninitialized: true
}))
app.use(passport.initialize())
app.use(passport.session())
/* main router 설정 : 다른 파일로 옮겨서 라우팅하려면 이런식으로 해야함 */
app.use(router)

다음과 같이 app.use(router)를 맨 밑으로 설정하면 됩니다.

강의제목: passport기반 세션처리 으로 미리 가보시면, 6분 59초에 crong 님의 app.js 에서 코드가 이런식으로 되어있습니다.

0

app.js 아니면 index.js에 오타가 나서 에러가 뜨는 겁니다.