Node.js ejs 관련 질문입니다.
본문
ejs를 사용하려고 res.locals를 통해 ejs 안에서 사용될 변수를 넣었는데,
(res.locals.is_mobile 변수. 원래 이렇게하면 템플릿에서 is_mobile 변수를 사용할수 있어야함)
(+ req.query 는 원래 req.param() 함수로 하는건데 deprecated 떠서...)
(+ cfg.etc.m_agent 는 윗줄에서 선언했던 변수입니다)
// 모바일(스마트폰) 기기로 접속했는지 여부 확인
app.use((req,res,next) => {
let mobile = new RegExp(cfg.etc.m_agent,'ig');
let is_mobile = (req.session.device) ? req.session.device == 'mobile' : mobile.test(req.header('User-agent'));
// get변수를 통해 디바이스설정을 바꿀 수 있도록 설정
if(req.query.device){
is_mobile = (req.query.device == 'mobile');
}
if(is_mobile) req.session.device = 'mobile';
else req.session.device = 'pc';
res.locals.is_mobile = req.is_mobile = is_mobile;
next();
});
해당 변수가 선언되지 않았다는 (ReferenceError) 에러가 납니다.
(아래는 <style> 태그 안에있는 css 구문에서 is_mobile 을 사용하다가 난 에러 메시지)
/*
ReferenceError: /mnt/HDD2/node_sockets/dev_servers/gozaboard/assets/views/error.ejs:11
9 | white-space:pre-wrap;
10 | word-break:break-all;
>> 11 | <% if(is_mobile){ %>
12 | font-size:0.6em;
13 | <% } %>
14 | }
is_mobile is not defined
*/
어떻게 해야 되나요?
!-->!-->답변 4
is_mobile is not defined 라고 하잖아요..
정의 안되었다하니. 왜그런지 확인해야겠죠.. 에러내용에 항상 답이 있다
어려운 질문인 것 같습니다. 답변을 위해서 EJS를 사용해 볼까 생각해 보다가,
이것은 큰 그림이 아닌 것 같아서 답변드립니다. 참조 글(https://sir.kr/cm_free/1562537)
주제넘지만, 우선 큰 방향성에 별 도움이 안되는 프레임 워크같습니다.
확장성, 편의성등 여러가지를 고려한다면 다른 솔루션으로 배우는 것을 추천드립니다.
(이 방향이 맞는지는 아루래도 2-3년후에 결정이 날 것 같습니다.)
그런데... 다른거 다 냅두고 모듈만 다시까니깐 또 되네요...?
답변을 작성하시기 전에 로그인 해주세요.