1. 에러의 원인
req.flash is not a function 이 나타나는 에러의 원인은 다양한 것 같다.
정확하게 에러의 원인이 이것이다! 하고 단정하기는 어렵지만 서칭을 해보니
2가지의 원인이 있는 것 같다
- authenticate 에서 에러가 뜨는 상황
- req.flash를 사용헤 flash 메세지를 얻어오려는데 못얻어오는 상황.
나의 경우에는 req.flash 를 사용하지 않았는데 위 에러가 떴기에 좀 찾는데 시간이 오래 걸렸었다.
2. 해결 방법
1) Passport 사용시 Client에서 서버로 요청까지는 보내지는데 authenticate 에서 에러가 뜨는 상황
login 모듈을 사용시에 LocalStrategy 통해 로그인 정보를 받는다
passport.use(new LocalStrategy({ // local 전략을 세움
usernameField: 'id',
passwordField: 'pw',
session: true, // 세션에 저장 여부
passReqToCallback: false,
}, (id, password, done) => { ... }
이 때 아래와 같이 usernameField, passwordField 에 form 의 어떤 정보를 받을지 기입을 해줘야되는데
form 에서 전달받는 id, name 형식과 LocalStrategy 에 저장된 key 가 다르면 받아들이지를 않기에
req. flash 에러가 뜰 수 있다.
req.flash 를 사용하지 않았는데 위 에러가 뜨면 설정한 field 가 일치하는지 살펴봐야겠다.
2) req.flash 를 사용했는데 에러가 뜨는 상황
이런 에러는 사소한 이유로 발생을 하는것 같다. 하직 해당 에러를 겪지는 않았기에
추후에 에러를 찾을 경우 대비해 아래 링크 기록해둔다
https://www.inflearn.com/questions/8701
TypeError: req.flash is not a function - 인프런 | 질문 & 답변
이 에러가 계속떠서 에러위치 찾아보니깐 req.flash사용한 부분에서 에러가 나는데 필요한 모듈설치와 미들웨어 설정도 했는데 왜이런가요? - 질문 & 답변 | 인프런...
www.inflearn.com
https://stackoverflow.com/questions/34310348/passport-and-connect-flash-req-flash-is-not-a-function
Passport and connect-flash: req.flash is not a function
I'm learning flash messaging in passport and got stuck on this error when running my script: req.flash is not a function Here is my configuration: var flash=require("connect-flash"); app.use(fla...
stackoverflow.com
https://unordinarydays.tistory.com/119
[NodeJs] PassPort 로그인 기능 구현시 trouble shooting
Scenario NodeJS의 npm 모듈중 passport를 쓰면서, 분명히 가이드라인대로 했는데 안되는 게 좀 있엇다. 다들 어이없는 이유로 안됬는데, 이런거땜에 1~2시간은 족히 소요되는 것 같다. 1.Passport 사용시 Cli
unordinarydays.tistory.com