전체 글 132

ExpressJS multer

ExpressJS multer form 태그 속성이 multipart/form-data 본문을 해석 - multer 함수 호출 - multer 자체가 미들웨어라기보다 multer 함수안에 4개의 미들웨어가 있음 - 실제 운영 시에는 서버 디스크 대신에 S3같은 스토리지 서비스(클라우드)에 저장 - 클라이언트 요청(single) 전송 - 클라이언트 요청(fields) 전송 - 서버 응답 const fs = require("fs").promises; const path = require("path"); const multer = require("multer"); - 폴더 생성 fs.readdir("uploads") .then((req, res, next) => { }) .catch((err) => { con..

서버/Express 2022.01.20

NodeJS dotenv

NodeJS dotenv 비밀키 관리하는 파일 - 키=값 줄바꿈 형식으로 작성 - 세미콜론 붙이면 안됨 - 최대한 위에 작성 - 파일은 만들지만 Github/클라우드 등 서비스에 파일을 올리진 않음 - 비밀번호를 하드코딩하지 않는 건 기본 - app.js(dotenv 사용 페이지) - npm i dotenv - 프로젝트 폴더 안 .env 폴더 생성(확장자 없음) const dotenv = require("dotenv") dotenv.config() - .env COOKIE_SECRET=admin DB_PASSWORD=admin

서버/Node 2022.01.20

NodeJS NPM semver package.json

NodeJS NPM semver package.json 노드 패키지 관리 매니저 - 다른 사람들이 만든 소스 코드들을 모아둔 저장소 - 남의 코드를 사용하여 개발 가능 - 이미 있는 기능을 다시 구현할 필요가 없어 효율적 - 오픈 소스 생태계를 구성중 - 패키지는 NPM에 업로드된 node 모듈 - 패키지도 다른 패키지 사용 가능 의존 관계라고 부름 - 명렁어 npm start : package.json "start" 속성 실행 npm ls : 현재 프로젝트에 어떤 패키지가 사용되고 있는지 확인 npm outdated : 어떤 패키지에 기능 변화가 생겼는지 알 수 있음 npm uninstall 패키지명 : 패키지 삭제(npm rm 패키지명으로도 가능) npm search 검색어 : npm 패키지 검색(n..

서버/Node 2022.01.19

NodeJS fs

NodeJS fs 파일 시스템에 접근하는 내장 모듈 - 파일/폴더 생성 삭제 읽기 쓰기 가능 - browser는 제한적이었으나 노드는 권한을 가지고 있음 fs / 프로미스 문법 지원 const fs = require("fs").promises; - fs.readFile("경로", (err, data)) : 파읽 읽기 data에 내용이 들어있음 fs.readFile("./text.txt") .then((data) => { console.log(data.toString()); }) - fs.writeFile("경로 파일명", "내용") : 파일 생성 fs.writeFile("./text.txt", "text입니다."); .then(() => { }) .catch((err) => { console.error(..

서버/Node 2022.01.18

NodeJS exception 예외 처리

NodeJS exception 예외 처리 처리하지 못한 에러 - 서버 스레드를 멈추게 함 - 노드는 기본적으로 싱글 스레드라 스레드가 멈춘다는 건 프로세스가 멈춘다는 거 - 에러 처리는 필수 - try catch - 기본적으로 에러가 발생할 만한 코드를 try catch로 감쌈 setInterval(() => { try { throw new Error("에러 발생"); } catch(err) { console.error(err); } }, 1000); - node 비동기 메서드의 err는 따로 처리하지 않아도 됨 const fs = require("fs").promises; setInterval(() => { fs.readFile("./text.txt") .then((data) => { throw new..

서버/Node 2022.01.18

NodeJS process

NodeJS process 현재 실행중인 node 프로세스에 대한 정보를 담고 있음 - 파일 폴더 경로와 마찬가지로 node는 운영체제에 접근 할 수 있음 - 컴퓨터마다 출력값이 다를 수 있음 - process process.version : 현재 설치된 node 버전 process.arch : 아키텍처 정보(arm ia32) process.platform : 운영체제 정보(linux darwin(맥) freebsd) process.pid : 프로세스 아이디(프로세스별로 구분과 강제 종료 시 사용) process.uptime() : 프로세스 시작 후 경과 시간 process.execPath : node 설치 경로 process.cwd() : 현재 프로세스가 실행되는 위치(__filename/__dirna..

서버/Node 2022.01.18

NodeJS event

Nodejs event 브라우저와 마찬가지로 node도 event 등록 가능 - 여러 파일간의 event 가능 const eventEmitter = require("events"); const myEvent = new eventEmitter(); - myEvent.on/addListener : 이벤트 생성 myEvent.on("event-1", () => { console.log("event-1") }); myEvent.addListener("event-2", () => { console.log("event-2") }); - myEvent.once : 한 번 실행되는 이벤트 myEvent.once("event-once", () => { console.log("event-once) }); - emit("인..

서버/Node 2022.01.18

NodeJS path

NodeJS path 폴더와 파일의 경로를 쉽게 조작하도록 도와주는 내장 모듈 - 운영체제별로 경로 구분자가 다름 - Windows : \(역슬래시) POSIX : /(슬래시) - path.js const path = require("path"); __filename : 현재 파일 __dirname : 현재 폴더 path.join(__dirname, "path.js") : 현재 폴더 속 path.js 파일 path.join(__dirname, "../", "path.js") : 부모 폴더 속 path.js 파일 path.resolve(__dirname, "..", "path.js") : 절대 경로(root) path.js 파일 path.dirname() : 디렉토리 추출 path.extname() : 확..

서버/Node 2022.01.18

NodeJS url

NodeJS url 브라우저 주소를 쉽게 조작하도록 도와주는 모듈 - url 처리는 node와 WHATWG 2가지 방식이 있음 - node(querystring) WHATWG(searchParams) - 쿼리스트링(querystring) const url = require("url"); const querystring = require("querystring"); - url.parse("주소") : 주소 파싱 const myUrl = url.parse("https://www.naver.com?category=node&page=3); - querystring.parse("파싱된 주소".query) : 파싱된 주소를 자바스크립트 객체로 분해 const query = querystring.parse(myUrl..

서버/Node 2022.01.18