테스트 사이트 - 개발 중인 베타 버전입니다

Node.js ejs 관련 질문입니다. 채택완료

조윤진 5년 전 조회 5,139

ejs를 사용하려고 res.locals를 통해 ejs 안에서 사용될 변수를 넣었는데,

(res.locals.is_mobile 변수. 원래 이렇게하면 템플릿에서 is_mobile 변수를 사용할수 있어야함)

(+ req.query 는 원래 req.param() 함수로 하는건데 deprecated 떠서...)

(+ cfg.etc.m_agent 는 윗줄에서 선언했던 변수입니다)

 

</p>

<p>// 모바일(스마트폰) 기기로 접속했는지 여부 확인</p>

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

<p>    let mobile = new RegExp(cfg.etc.m_agent,'ig');</p>

<p>    let is_mobile = (req.session.device) ? req.session.device == 'mobile' : mobile.test(req.header('User-agent'));</p>

<p>    </p>

<p>    // get변수를 통해 디바이스설정을 바꿀 수 있도록 설정</p>

<p>    if(req.query.device){</p>

<p>        is_mobile = (req.query.device == 'mobile');</p>

<p>    }</p>

<p>    </p>

<p>    if(is_mobile) req.session.device = 'mobile';</p>

<p>    else req.session.device = 'pc';</p>

<p>    res.locals.is_mobile = req.is_mobile = is_mobile;</p>

<p>    next();</p>

<p>});</p>

<p>

 

해당 변수가 선언되지 않았다는 (ReferenceError) 에러가 납니다.

(아래는