Node.js ejs 관련 질문입니다.

Node.js ejs 관련 질문입니다.

QA

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년후에 결정이 날 것 같습니다.)

답변을 작성하시기 전에 로그인 해주세요.
전체 947
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT