[Node.js] 내장 모듈(path, url, searchParams)
·
Dev/Node.js
os 모듈노드가 제공하는 내장 모듈을 require로 사용. - 내장 모듈은 경로 없이 이름만 기재 가능 os 모듈 메서드os.arch(): process.arch와 동일os.platform(): process.platform과 동일os.type():..
Cannot set headers after they are sent to the client 오류
·
Dev/Node.js
node.js로 express를 사용하는 중 아래와 같이 오류가 발생했다. [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client. [ERR_HTTP_HEADERS_SENT]는 서버가 클라이언트에 2개 이상의 응답을 보내려고 할 때 발생하는 오류라고 한다. 즉. 하나의 응답을 보낸 후 또 다른 응답을 동시에 보내려고 할 때 발생하는 오류다.결론 먼저 말하자면 위 코드는 /login 시 GET으로 실행되는 작업이 2개여서 위와 같은 에러가 났다. => 내 잘못 이 경우는 루트 페이지 /로 이동하면 로그인 페이지로 이동하게 하고, 로그인 성공 시 쿠키를 획득하게 하여 쿠키가 있을 경우 루트 페이지에서 로그인 성공 화면을 띄우..
[Node.js] 10 - 노드 내장 객체 - console, process.env, nextTick
·
Dev/Node.js
global✅ 노드의 전역 객체- 브라우저의 window 같은 역할- 모든 파일에서 접근 가능하다.- node에서 this는 global.console✅ 주로 개발 중 변수 값 확인 등 디버깅 용도로 사용✅ console.log(): 일반적 내용을 콘솔에 출력 ✅ console.error(): 에러 내용을 콘솔에 출력- error와 log는 콘솔창에서 볼 때 차이가 없다. but, 실제 서버를 배포했을 때 서버에서 오류가 나거나 이럴 때 다른 곳(다른 폴더나 파일)에 결과를 저장해서 확인하기 위해 error를 사용한다. ✅ console.time(레이블), console.timeEnd(레이블): 같은 레이블을 가진 time과 timeEnd 사이의 시간 층정 용도✅ console.table(배열): 배열 ..
[Node.js] 09 - CommonJS & ECMAScripts Module
·
Dev/Node.js
모듈 ✅ 노드는 자바스크립트 코드를 모듈로 만들 수 있다. - 모듈: 특정한 기능을 하는 함수나 변수들의 집합 - 모듈로 만들면 여러 프로그램에서 재사용 가능 CommonJS 모듈 ✅ JS 표준 모듈이 있기 전부터 노드에서 사용해 온 방식 - 같은 폴더 내에 var.js, fun.js, index.js 만들기 - 파일 끝에 module.exports로 모듈로 만들 값을 지정 - 다른 파일에서 require(파일경로)로 그 모듈의 내용을 가져올 수 있음 // var.js const odd = 'Odd' const even = 'Even' module.exports = { odd, even, }; // func.js const {odd, even} = require('./var.js') function ch..
[Node.js] 08 - npm(Node Package Manager)
·
Dev/Node.js
npm이란 ✅ Node Package Manager - 이미 있는 기능을 다시 구현할 필요가 없어 효율적(대부분 오픈 소스) ✅ 패키지 - npm에 업로드된 노드 모듈 - 패키지들 간에도 의존 관계가 있음 npm 스크립트 ✅ npm run [스크립트명] - 스크립트로 지정한 명령 실행. run 꼭 붙이기. ✅ npm [npm명령어] - npm 명령어들은 run 없이 실행 가능 e.g. npm start package.json ✅ 현재 프로젝트에 대한 정보와 사용 중인 패키지 이름 및 버전 정보를 담은 파일 - 동일 버전을 설치하지 않으면 문제 생김 - 노드 프로젝트 시작 시에 가장 먼저 package.json부터 만들고 시작해야 함 ✅ npm inint --yes - 기본 값으로 입력된 package.j..
[Node.js] 07 - https와 http2
·
Dev/Node.js
https ✅ HyperText Transfer Protocol Secure - 웹 서버에 TSL/SSL 등 암호화 기능을 추가하여 통신 - 서버와 클라이언트 사이에 전달하는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없게 함 - cf) http 통신에서는 서버와 클라이언트간 전송 데이터가 모두 노출되어 보안에 취약 - http 서버를 https 서버로 변환하려면 공식인증기관에서 발급받은 인증서 필요 http2 ✅ SSL 암호화와 더불어 최신 HTTP 프로토콜인 http2를 사용하는 모듈 - 이진 데이터 & 압축된 header 전송으로 내용 노출 없음 - 동시에 여러 요청 및 응답이 가능 - 보안과 성능이 모두 개선됨 cf) http/1.1 - 텍스트 데이터 & 압축되지..
[Node.js] 06 - REPL/JS 파일 사용법
·
Dev/Node.js
REPL - R(Read) ➡ E(Evaluate) ➡ P(Print) ➡ L(Loop) - 노드에서 REPL이라는 콘솔을 이용해 JS 코드를 실행 가능 - 터미널에 node 입력 후 사용. 입력한 값의 결과 값이 바로 출력됨 (간단한 코드 테스트 용도로 적합) - .save filename : 코드 저장 - Ctrl+C 2번 or .exit : 종료 JS 파일 만들어 실행하기 - 자바스크립트 파일을 콘솔창에서 실행 - hellWorld.js를 작성 - node [JS 파일 경로] 로 실행. 확장자를 안 써도 JS로 인식하고 실행됨. function helloWorld() { console.log('Hello World'); helloNode(); } function helloNode() { consol..
[Node.js] 05 - AJAX / JSON
·
Dev/Node.js
정적 웹 사이트(Static sites) - 브라우저가 지정된 URL에 HTTP "GET"요청을 보낼 때 서버에서 하드 코딩된 동일한 콘테츠를 반환한다. 동적 웹 사이트(Dynamic sites) - 필요할 때에 동적으로 응답 콘텐츠를 생성 - HTML 템플릿에 있는 자리 표시자에 데이터베이스에서 가져온 데이터를 넣어 생성 JSON ( JavaScripts Object Notation ) ✅ 서버와 클라이언트가 데이터를 주고받을 때 일반적으로 사용하는 형식 ✅ Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자열 형태의 포맷 - Parsing: 문자열 형태(JSON) ➡ 객체(JavaScript)로 변환 - Stringification(문자열화): 객체(JavaScript) ➡ 문자열..