Node.js
- 구글 크롬의 자바스크립트 엔진에 기반해 만들어진 JavaScript 런타임
- 이벤트 기반 등 가볍고 효율적
- npm 패키지는 세계에서 가장 큰 오픈 소스 라이브러리
런타임이란?
- 프로그래밍 언어가 구동되는 환경
ex python Java node.js
- Javascript 런타임 환경은 웹브라우저만 존재했었음
-> js를 서버단 언어로 사용하기 위해 나온 것이 node.js
-> 웹 브라우저 없이 실행 가능
Node.js 특징
1. 자바스크립트 언어 사용
2. Single Thread
3. 비동기 I/O 방식
Single Thread?
에러를 처리하지 못하면 프로그램이 아예 중단됨!
(에러를 못잡으면 서버가 죽고 실행이 안된다. 이는 순차실행이기 때문이다.)
-> 예외 처리의 중요성 UP !!
싱글 스레드 vs 멀티 스레드
- 싱글 스레드 : 순차실행
- 멀티 스레드 : 병행실행
비동기 I/O 방식 (Non-blocking I/O)
- 동기는 차례대로 처리
: 한 요청에 서버 응답이 이뤄질 때까지 계속 대기
장점 - 설계가 매우 간단하고 직관적
단점 - 결과가 주어질 때까지 아무것도 못하고 기다리고 있어야 한다
- 비동기는 기다리지 않고 처리한다
: 요청한 후 응답을 기다리지 않고 다른 활동을 한다
장점 - 요청에 따른 결과가 반환되는 시간동안 다른 작업을 수행할 수 있다
단점 : 동기식보다 설계가 복잡함
Node.JS는 비동기 방식이므로, 우리가 순서를 정해줘야 한다!
Node.js 설치하기
다운로드 | Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
설치 후 CMD에 가서 버전 확인
node -v
npm -v
Npm이란?
- JavaScript로 개발된 각종 모듈의 설치, 업데이트, 구성, 제거 과정을 자동화하여 관리해주는 기능
Putty에 가서 입력하기 (서버)
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
apt-get install nodejs
apt-get install npm
이때 오류가 났다.
node -v를 했을 때, 나오지 않음
사용하는 ubuntu와 버전이 달라 18.x를 못 찾음
node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)
오류 해결방법
먼저 이미 설치한 nodejs 삭제하고
apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
apt-get install nodejs
apt-get install npm
다 설치되고 나면, 정상적으로 버전을 확인할 수 있다.
이제 서버에서는 변경, window에서도 변경한다.
Window 에서 node.js 버전 변경하기
1.https://github.com/coreybutler/nvm-windows 로 가서 nvm 다운로드
2. nvm 설치하기
3. exe를 실행해 설치를 완료했다면 , CMD로 가서 nodejs 16 버전 설치
nvm install 16
4. nodejs 16 으로 버전 변경
nvm use 16
5. node -v 와 npm -v 로 각각 버전 확인
이는 오류가 나서 서버와 window를 버전 교체한 것이므로, 제대로 16ver를 설치하면 굳이 할 필요없는 과정!
Node.js에서 콘솔은 REPL
- 간단한 코드 테스트 용도
- 한줄한줄 console.log 찍히는 것
따라서 이제 다른 PC에서 개발할 때는
Index of /dist/v16.18.1/ (nodejs.org)
Index of /dist/v16.18.1/
nodejs.org
여기서 다운로드 하도록 하자
(18 버전 오류해결)
widnow
node-v16.18.1-x64.msi
Mac
node-v16.18.1.pkg
'[부트캠프] IT 코딩 부트캠프 후기 > [Let's TIL🚴♀️] CodingON' 카테고리의 다른 글
[Node.js] promise 문법, FS모듈 다루기, 서버에 연결(HTTP) (0) | 2022.11.19 |
---|---|
[Node.js] 노드 내장 객체와 모듈 알기 (+ 객체 구조 분해, 콜백 함수) (2) | 2022.11.19 |
[GIT] GIT 다루기(branch 생성 삭제, merge기초) and 브랜치 종류 (0) | 2022.11.15 |
[개발 문화 및 협업 도구] 개발 방법론(폭포수, 애자일) and 스크럼, 칸반 (0) | 2022.11.15 |
[Server서버] NCP 서버 구축하기 (Naver Cloud Platform) (0) | 2022.11.14 |