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 라고 하잖아요..
정의 안되었다하니. 왜그런지 확인해야겠죠.. 에러내용에 항상 답이 있다
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
어려운 질문인 것 같습니다. 답변을 위해서 EJS를 사용해 볼까 생각해 보다가,
이것은 큰 그림이 아닌 것 같아서 답변드립니다. 참조 글(https://sir.kr/cm_free/1562537)
주제넘지만, 우선 큰 방향성에 별 도움이 안되는 프레임 워크같습니다.
확장성, 편의성등 여러가지를 고려한다면 다른 솔루션으로 배우는 것을 추천드립니다.
(이 방향이 맞는지는 아루래도 2-3년후에 결정이 날 것 같습니다.)
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인