본문 바로가기

프로그래밍/nodejs41

[220314] Error: listen EADDRINUSE: address already in use :::4001 문제해결 / mac, 맥북 해당 :4001라는 포트로 이미 사용중이라고하는데, 프로그램은 이거 하나 돌리고 있는 중인데요. 검색해보니 강제로 종료되거나 알 수 없는 이유로 종료되면 지 혼자 이렇게 오류가 떠돌아다닌다고 한다. 강제로 꺼주자. sudo lsof -i :오류포트 // 오류 포트 찾기 sudo kill -9 [오류코드] //오류 포트 삭제 이 과정을 거치면 문제없이 다시 돌아간다. 2022. 3. 14.
[220314] 미들웨어 body-parser와 cookie-parser body-parser node.js의 모듈 중 하나이며, post request body에서 파라미터를 편리하게 추출해주는 미들웨어다. app.post('/login',(req,res)=>{ console.log(req.body) } 가장 흔하게 쓰는 예시인 req.body는 사실 body-parser를 사용하지 않는다면 디폴트로 설정된 Undefined값이 나온다. 그래서 이 값을 읽어오기 위해 필수적으로 body-parser 라이브러리를 설치해야만한다. 하지만 express에 body-parser가 기본적으로 포함되어있으므로 express만 설치해주면 같이 사용이 가능하다. cookie-parser node.js의 모듈 중 하나이며, request 객체에 cookie 속성을 부여하는 미들웨어다. ke.. 2022. 3. 14.
[220221] nvm이 맥북 m1 칩에 설치되지 않을때. 라이브러리나 웹템플릿을 처음 설치해봐서 여기저기에 설치하고 지우고 들어내는걸 반복한 결과, 터미널에서 알 수 없게 충돌을 일으키거나 에러가 터지는 대참사가 일어나서 맥북을 초기화했다. 그리고 왜인지 모르게 처음에 설치했던 방법으로 nvm이 설치가 안되는 미친 상황이 일어났다. 미래의 나를 위해서 작성하는 게시물... 울지말고 이거 보고 재설치해라 나새기. 1) 공식 nvm 깃헙 $ brew install nvm trouble shooting 뜨는거 잘 보고 설치 먼저 한 후에, 공식 깃헙가서 바꿀 수 있는거 먼저 바꿔놓기 ( 공식깃헙 : https://github.com/nvm-sh/nvm#install--update-script ) 나는 trouble shooting에서 다음 세 줄이 떠서 따로 설치함.. 2022. 2. 21.
[220127] 상수와 리터럴의 차이, 객체리터럴, 템플릿리터럴 목록 1. 상수와 리터럴의 차이 2. 객체 리터럴 3. 템플릿 리터럴 리터럴이 뭐냐고 물어본다면 엄.. 몰라요? 근데 쓰긴 썼었던거 같은데?하는것도 한두번이지, 자꾸 찾기도 귀찮아서 수업을 들을때마다 은은하게 지나가며 들었던 리터럴에 대해 찾아보았다. 말 그대로 제공하는 변수가 아니라 고정값 검색할때 언제나 먼저 찾게되는 MDN이 리터럴에 대해 설명한 글이다. 고정값은 상수가 아닌가? 상수랑은 뭐가 다른걸까? 상수의 값은 재할당할 수 없으며 다시 선언할 수도 없습니다. '상수의 값'을 재할당할 수 없다는 것과 상수에는 숫자뿐만이 아니라 객체도 넣을 수 있다는 것에 집중해야한다. 상수 : 배열과 변수의 차이 const b = {} b.box1 = 10 console.log(b.box1) b.box1 = 2.. 2022. 2. 10.
[220210] 템플릿 엔진, nunjuck란? 목록 1. nunjucks의 역할 2. nunjucks의 문법 3. nunjucks 설치법 (링크) 1. 브라우저에 입력된 값을 받아 html을 다시 짜는 nunjucks html이나 css를 사용할때, 서로 다른 파일을 연결하기 위해 script나 style을 사용했었다. 그와 같게 자바스크립트도 독립적으로 존재한다. 그래서 js도 서로를 연결해주는 수단이 필요한데, 그게 바로 템플릿 엔진인 nunjucks다. 그렇다면 템플릿 엔진은 뭘까. 지정된 템플릿 양식에 데이터를 조합해서 HTML문서를 만드는 소프트웨어다. 우리가 보는 웹사이트 화면을 만들어줄때 도와준다고 생각하면 쉽다. 간단히 그림을 그려보자면, 이렇게 이해하면 편하다. 웹서버는 헤더를 읽어주는 express를 통해서 브라우저가 보내주는 요청.. 2022. 2. 10.
[220209] 세션 사용하기 : express-session, memorystore 설치 npm install express-session memorystore 매번 실행할때마다 쿠키를 가져오는 expres-session과 메모리를 저장할 장소에 관한 memorystore 라이브러리기 때문에 npm을 통해서 설치해준다. 세팅 const session = require('express-session') const memorystore = require('memorystore')(session) 세션을 사용할때 3가지를 기억하고 가자 1) 암호화 : 생성하는 결과물들이 겹치지 않게하는 처리 2) 세션을 저장할 공간 : 메모리에 하니? 하드에 하니? 서버에 하니? -> 우리는 메모리에 저장함. 3) 쿠키의 설정 : 세션이라면 기본적으로 필요한 쿠키. 보통은 쿠키의 만료시간이나 쿠키의 범위를 .. 2022. 2. 9.
[220209] 라우터 2개 사용하기, 라우터를 폴더화 시키는 2가지 방법 목록 1) 라우터 2개 사용하기 2) 다른 파일에 있는 코드를 불러오기 3) 라우터를 폴더화 시키기 라우터에 미들웨어 2개 넣기 app.get('/join', (req,res,next)=>{console.log('join1'); next()}, (req,res)=>{console.log('join2')} ) 2개를 이렇게 넣을 수도 있지만 보기에 복잡해서 따로 변수로 받아 넣는 경우가 더 많다. //2) 코드 안에 없으므로 코드 밖에서 a를 찾는다 let a = (req,res,next)=>{ console.log('join1'); next() } app.get('/join', a, (req,res)=>{ //1) a를 코드 안에서 찾는다. //3) a를 실행한다 //4) 그 다음 인자를 실행한다. co.. 2022. 2. 9.
[220208] 라우터와 미들웨어, 매개변수 next, 라우터 매개변수 목록 1. 라우터와 미들웨어 2. 미들웨어 매개변수 next 3) 라우터 매개변수 미들웨어와 라우터의 정의 미들웨어는 양쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어다. 라우터는 클라이언트의 요청경로를 보고 이 요청을 처리할 수 있는 곳으로 기능을 전달해 주는 역할을 한다. 이러한 역할을 라우팅이라고 하는데, URI(통합 자원 식별자, 인터넷에 있는 자원을 나타내는 주소)의 정의와 URI가 클라이언트 요청에 응답하는 방식을 의미한다. express에선 라우터를 미들웨어로 다음과 같은 기능을 제공하고 있다. 1) 라우터 객체 참조 2) 라우팅 함수 등록 3) 라우터 객체를 app객체에 등록 해당 라우터가 실행되면 첫번째 인자값인 '/'을 충족한 후에, 두번째 인자값인 미.. 2022. 2. 9.
[220208] 세션의 정의, 세션 구조 구현하기, 세션과 쿠키🍪의 관계 목차 1. 세션이 생겨난 이유 2. 세션 구현하기 3. 쿠키를 생성해서 서버에 저장하기 세션을 만든 이유 : 보안성을 위해. 이처럼 브라우저에 쿠키가 없으면 웹서버에 요청을 하며, 웹서버는 응답을 하며 🍪쿠키를 준다. 그 이후부터 브라우저는 쿠키를 같이 붙여서 웹서버에 요청을 하고, 웹서버는 쿠키를 붙여서 응답한다. 즉, 웹서버는 기본적으로 항상 쿠키를 받는다. 다만 문제가 있다면, 브라우저에 저장을 하다보니 다른 사람이 접근하기도 쉬워진다. pc방을 예로 들어보자. A가 이용을 끝낸 후, B가 브라우저를 열어 쿠키를 확인하면 로그인정보가 고스란히 남아있다. 그걸 보고 게임머니나 각종 개인정보를 털어갈 수 도 있다. 이를 방지하기 위해, 쿠키를 서버에 저장하게 하는것이 세션이다. 구현할 기능 청사진 청사.. 2022. 2. 9.
[220207] 로그인 페이지 만들기 목록 1. 청사진 그리기 2. login 페이지 3. logout 페이지 4. profile 페이지 청사진 그리기 login페이지 정보를 입력할 창 만들기 & 입력한 정보가 터미널에 찍히도록 만들기. 브라우저에서 입력한 정보와 user라는 객체에 있는 정보가 서로 일치하는지 확인하기 오류해결 [ERR_HTTP_HEADERS_SENT]:Cannot set headers after they are sent to the client at new NodeError 해결하기 코드를 잘못 적어서 에러가 났는데, if문이나 반복문에서 중복된 값이 호출될때 생기는거라고하더라. 보니까 사이트를 2번 호출하게 잘못 적어서 해결함. 로그인이 성공했을때, 쿠키 만들어주기 res.setHeader(`Set-Cookie`,`lo.. 2022. 2. 8.