본문 바로가기

Backend/Node.js

(13)
Node.js env 환경변수 관리 (초간단) 참고로 실습환경은 express-generater로 생성한 프로젝트 기준입니다. 다른 프로젝트에서도 동일한 방법으로 적용 가능하나 타이핑하는 내용은 다를 수 있습니다. 우선 package.json을 열어주세요. 그리고 package.json에 scripts를 수정해줍니다. 아래 환경 별로 변수를 추가해줄거구요. local: 로컬 환경 dev: 개발 환경 prod: 운영 환경 초기 package.json scripts npm start를 터미널에서 입력하면 node 서버가 실행되게 되어있습니다. { "scripts": { "start": "node ./bin/www" } } 수정한 package.json scripts npm start나 npm run local을 입력하면 local 환경변수가 적용된 no..
Node.js 메일 발송 (nodemailer) NodeJS에서 메일을 발송해볼게요. 발송자 메일은 Google 기준으로 작성했어요. 혹시 다른 사이트의 메일로 발송을 원하시는데 어려움을 겪고 계시다면 댓글 남겨주시면 제가 한 번 찾아볼게요! 저는 nodemailer를 이용했어요. 일단 nodemailer를 설치해줍니다. npm install nodemailer 그리고 transport 객체를 생성하는 파일을 만들어줄거에요. 이 객체로 우리는 비즈니스 로직을 구현할거에요. 저는 mail.transport.js 라는 파일을 만들어서 transport 객체를 만들고 export 했습니다. mail.transport.js const nodemailer = require('nodemailer') const transport = nodemailer.create..
Node.js (Express) mongoose 연동 NodeJS에서 mongoose 모듈을 활용하여 mongodb를 연동해볼게요. 아주 간단해요. 이 글은 몽고DB를 연결하는 데에 목적이 있어요. (사실 연결할 때마다 구글에 검색해서 긁어오기 귀찮아서..) mongoose 모듈을 활용하여 crud하는 기능은 차후에 별도로 포스팅할 예정이에요~! mongoose 설치 npm install mongoose mongodb.js 설정 혹시 비밀번호가 있다면 mongodb://username:password@localhost:27017/demo const mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/demo', { useNewUrlParser: true, useUnifiedT..
Node.js 패스워드 암호화 - bcrypt NodeJS에서 bcrypt로 패스워드 암호화하는 방법을 알아볼게요. bcrypt는 현업에서 많이 사용하고 있는 패스워드 암호화 알고리즘이에요. 기본적으로 salt를 추가하여 해싱하기 때문에 오래 전부터 많이 사용하는 SHA256이나 SHA512보다 보안성이 높다는 평가를 받아요. 물론 다른 알고리즘들도 어떻게 개발자가 salt를 활용하여 커스텀하게 구현하느냐에 따라 보안 강도가 달라지지만 bcrypt를 선택했다는 것만으로도 안정성을 어느 정도 보장받는다고 보시면 되요. 이제부터 NodeJS로 어떻게 평문을 bcrypt를 활용하여 암호화하고 검증하는지 코딩을 해볼게요. bcrypt 모듈을 설치 npm install bcrypt 이제 사용만 하면 되요. 일단 암호화해볼게요. bcrypt 모듈을 소스 상에서..
Node.js Logging 설정 (winston) NodeJS에서 로그를 남겨볼게요. 어떤 서버든지 실제로 서비스를 운영하려면 로그 남기는 것은 필수에요. 특히, 로그 파일만 보고 error가 정확히 어떤 파일의 몇 번째 라인에서 발생했는지 남는 것이 중요해요. 중요한 info 로그도 남길 수 있어야 해요. 예제를 통해 알아볼게요. 우선 아래 모듈을 설치해주세요. npm install winston winston-daily-rotate-file logger.js 아래 코드를 복사하여 원하는 경로에 넣어주세요. 저는 config라는 폴더를 만들어서 넣었어요. logDir 경로는 로그 파일이 저장되는 경로에요. 코드 적용하실 때에 logDir은 필수로 수정해주세요. var winston = require('winston') const winstonDaily..
Node.js exception handler - custom error Node.js에서 커스텀한 메시지를 내려볼게요. 실제로 발생하는 오류가 아닌 "비밀번호 불일치", "게시글 없음"과 같은 오류를 전달할거에요. 바로 예제로 가볼게요. Express Framework 환경이구요. 아마 에러 핸들러를 만드는 최소한의 코드일거에요. 수정하셔서 사용하시면 될 것 같습니다. 일단 custom-error, error-handler라는 파일을 만들었어요. custom-error.js class CustomError extends Error { constructor(code, message, ...params) { super(...params) if (Error.captureStackTrace) { Error.captureStackTrace(this, CustomError) } thi..
Node.js 파라미터 전달 (Param, Path, Body, Header) NodeJS에서 파라미터를 받아볼게요. http 통신에 대한 기초적인 개념이 있으셔야 하구요. 1. 파라미터 받기 (Parameter) http://localhost:3000/users?userId=gofnrk&password=1234 요런식으로 파라미터를 전송해볼게요. router.get('/', function(req, res, next) { let { userId, password } = req.query; console.log(userId); console.log(password); res.send('respond with a resource'); }); 2. 경로를 변수로 받기 (Path Variable) http://localhost:3000/users/gofnrk 요렇게 호출했을 때 gofn..
Node.js 재시작 없이 반영, 자동 재시작 (Supervisor) 바로 본론으로 들어갈게요. Supervisor(슈퍼바이저) 설치 npm install supervisor -g 원래 node app.js 요렇게 실행을 시켰죠. Supervisor를 설치해서 사용할 때는 supervisor app.js 요렇게 Node를 실행해주면 됩니다. supervisor app.js npm start로 실행하고 계신다면 package.json을 열어보세요. node 실행 명령어가 있을겁니다. 그걸 supervisor로 수정해주면 끝! 저는 express-generator로 프로젝트를 만들어서 node ./bin/www로 되어있었네요. 수정하고 실행하겠습니다. "start": "supervisor ./bin/www" 소스 코드를 수정하고 저장할 때마다 요런 문구가 뜰거에요. crash..