본문 바로가기

node.js13

pkg 로 바이너리 파일 생성 pkg는 nodejs가 설치되어 있지 않은 환경에서 실행할 수 있도록, standalone의 바이너리 파일을 만들어서 배포해주는 모듈이다. 이번에 외부 개발자에게 배포해야할 일이 생겨 적용해 보았고, 사용 방법에 대해 간략하게 기술한다. 설치는 다음과 같다. npm install -g pkg 글로벌 설치하지 않고 devDependancy 에만 적용하고 싶다면, npm install --save-dev pkg설치 되었다면 package.json에 설정값을 추가한다. "bin": { "app": "./bin/www" }, "scripts": { "start": "nodemon --exec babel-node ./bin/www", "build": "pkg . --debug --out-path dist" }, .. 2022. 3. 28.
socket.io 사용 방법 제어권 관리를 위해 소켓 통신 도입을 검토하였다. 일반적인 사용 용도는 아닐 듯 하지만... 이 포스트에서는 socket io의 개념적인 부분보다는 사용 방법 및 기능에 대해 서술하면서 도입을 할만한 가치가 있는지 검증한다. 각각 서버와 클라이언트에 다른 node module을 설치한다. // 서버 npm install socket.io // 클라이언트 npm install socket.io-client 각각 서버와 클라이언트에 아래와 같은 코드를 작성한다. 서버 const app = require("express")(); const http = require("http"); const server = http.createServer(app); const { Server } = require("socke.. 2022. 3. 14.
swagger 로 api문서를 만들어보자 restful api 서버를 만들 때 몇가지 고민이 있었는데, 우리가 만드는게 서버에서 api를 제공하는 단순 구조가 아니라 C++ binary api > napi 작성 후 .node 변환 > .node를 rest 로 작성 이라는, 몇가지 단계가 있었기 때문에 rest api의 검증이라던지, 추후에는 사용자에게도 배포를 할 것이기 때문에 문서를 어떻게 할지 고민이 되던 차에 swagger를 이용해 검증도 하고 사용자 배포용으로 쓰기로 결정 swagger에 대해 찾아보면서 너무나 다양한 케이스가 발견되었는데 그 중에서 아래와 같이 결정하였다. 1. swagger2.0 / swagger3.0(openAPI 3.0) 2. annotation(in code) / json / YAML 결정한 이유는 다음과 같다... 2021. 12. 9.
forever 로컬 모듈로 실행하기 for window 종종 node 프로젝트를 로컬로 돌려야하는 경우가 있다. 내 경우는 암호화 모듈이 dll로 제공되었고, 32비트로 빌드해야 되는 상황에 버젼 호환 문제도 있는지 다른 버젼으로 빌드가 안되서 제공된 것을 그대로 써야 했던 상황... 근데 새로운 서버로 올려야 했기에 forever를 로컬로 설치해야 했다. forever git을 가도 구글을 찾아봐도 로컬 실행에 대한 가이드가 없어서 찾다 찾다 찾음.. 기본적으로 forever를 로컬로 설치하면 root/node_modules/.bin 혹은 forever 폴더 내에 .bin 내에 forever.cmd파일이 생성된다. 열면 아래와 같음 @IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\node_modules\fore.. 2019. 6. 18.
winston logger에서 날짜 제대로 안찍힐 때 인터넷에 있는 수많은 예제 function timeFormat(){ return moment().format('YYYY-MM-DD HH:mm:ss'); } new (winston.transports.Console)({ name : 'debug-console', colorize : true, timestamp : timeFormat(), level : 'debug', showLevel : true, json : false, localTime : true }) 이런식으로 되있는데(이거 말고도 수많은 형식이 있는데... 일단 내 case에서는 format이 안되고 그러니 format.printf 등등 도 안되고...) 문제는 timeFormat()을 지정했음에도 망할 아래처럼 출력되었다. 2019-06-04T.. 2019. 6. 4.
Express node.js 의 미들웨어 모듈 Express 나름대로 정리 Express가 할 수 있는 일의 단적인 예제 기존의http.createServer(function (req, res) { const method = req.method.toLowerCase(); switch(method){ // get 요청 처리 : 영화 목록 보기, 영화 상세정보 보기 // 영화목록보기 /movies // 상세보기 /movies/1 or 2 or 3 .... case 'get' : handleGetRequest(req,res); break; // 영화 정보 추가 /movies case 'post' : handleSelectMethod(req, res); function handlePutRequest(req, res){ con.. 2019. 3. 13.
http HTTP(Hyper Text Transfer Protocol)하이퍼 텍스트 : 하이퍼 링크로 논리적으로 연결된 문서(eg HTML) HTTP통신의 특징HTTP통신 : 요청과 응답(Request and Response) 과정웹브라우저 -> 주소 입력 -> 요청 -> 웹 서버 -> 응답 -> 웹 브라우저 URL리소스의 위치 : URL(Uniform Resouce Locator) HTTP 메세지 구조요청메세지요청 라인요청 헤더요청 바디(엔티티) 요청 라인요청 메소드요청 URLHTTP버전 HTTP메소드 : 리소스를 다루는 행위GET : 리소스를 얻어오는 요청POST : 리소스 전송 요청PUT : 저장 요청(수정)DELETE : 삭제 요청 헤더헤더는 키 : 값 방식으로 작성 주요 요청 헤더Accept : 클라이언.. 2019. 2. 20.
주요 객체 정리 process애플리케이션 프로세스 실행 정보 env : 애플리케이션 실행 환경(실행 폴더, 소유자 정보 등등)version : node.js 버젼arch, platform : cpu와 플랫폼 정보argv : 실행 명령 파라미터(eg. node xxx.js 3 5 -> process.argv[0] = node, [1] = xxx.js, [2] = 3, [3] = 5) 이벤트 exit : 애플리케이션 종료beforeExit : 종료 되기 전에 발생uncaughtException : 예외 처리되지 않은 예외 처리 함수 exit : 애플리케이션 종료nextTick : 이벤트 루프 내 동작을 모두 실행 후 콜백 실행 타이머Timeout일정시간 뒤 호출setTimeout(callback, delay, arg, .... 2019. 2. 14.
image upload 중간과정을 좀 건너 뛰었지만... 기본에 해당하는 부분에서 마지막 파트. 파일 업로드! 기존 코드를 재사용 합니다. 그리고 업로드는 npm에 있는 모듈 중 하나인 formidable을 사용합니다. formidable의 설치는 터미널에서 npm install formidable index.js123456789101112var server = require("./server");var router = require("./route");var requestHandlers = require("./requestHandlers"); var handle = {}handle["/"] = requestHandlers.start;handle["/start"] = requestHandlers.start;handle["/up.. 2015. 12. 11.