Backend/NodeJS
-
[solved] npm install, gyp ERR! stack Error: `make` failed with exit code: 2Backend/NodeJS 2020. 12. 1. 16:17
npm 또는 yarn으로 노드 프로젝트의 모듈을 설치하려는데, # npm install MODULE 아래와 같은 gyp 관련 에러가 발생했을땐, 30 warnings and 12 errors generated. make: *** [Release/obj.target/fse/fsevents.o] Error 1 gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 ... info This module is OPTIONAL, you can safely ignore this error 혹시 노드 버전을 12.x 를 사용중이라면 10.x 으로 다운그레이드 해주자. # nvm install 10.16.3 # nvm use 10.16.3 ..
-
[node] How to crypt to password on backend serverBackend/NodeJS 2020. 5. 12. 12:42
개발중인 서비스를 런칭하기에 앞서, 패스워드 암호화 부분을 개선했다. (기존 방식은 예전에 작업하던 소스를 그대로 적용했던터라, 다시 보니 좀 허술해 보였다.) 암호화라고 하면 크게 두가지를 나눠 생각해 볼 수 있다. 기준은 복호화가 필요하냐 안하냐이며 복호화가 필요한 경우 crypto(암호화)를 해야하고, 필요하지 않은 경우 hash(해쉬)를 한다. 대표적으인 암호화 방식은 AES가 있고 제일 많이 사용된다. 해쉬는 SHA를 주로 사용한다. 계정 패스워드의 경우 복호화가 필요 없기 때문에 SHA-512 해시 방식을 적용했다. 구조는 간단한다. 비밀번호 생성시 랜덤값인 salt를 이용해 해쉬값을 만든다. crypto.randomBytes(64, (err: any, buf: any) => { salt = ..
-
[IOS] How to in app purchase verify receipt with Node.js (javascript). error status: 21002Backend/NodeJS 2020. 4. 21. 14:58
IOS 인앱 결제 구독 영수증 검증 모듈을 작업했다. 테스트용 sandbox에 http 요청을 보냈는데, 아래와 같은 에러 상태가 리턴 됐다. status: 21002 receipt 값과 password 값엔 이상이 분명 없는데 뭔가 이상했다. 아래와 똑같이 코드를 작성하면 해결된다. const verifySubsIOS = async (transactionReceipt) => { const verifyURL = `https://sandbox.itunes.apple.com/verifyReceipt`; // use 'https://buy.itunes.apple.com/verifyReceipt' for production const options = { uri: verifyURL, method: `POST`,..
-
[node] nodemailer를 이용해 메일 전송 하기Backend/NodeJS 2020. 4. 13. 09:39
node.js에서 메일 전송 시스템을 구축해보자. 사실 시스템까진 아니고,, 회원 비밀번호 초기화 기능을 목적으로 사용할 예정이다. node.js에선 nodemailer 모듈을 이용하면 단 코드 몇줄로 쉽게 기능을 구현 할 수 있다. 먼저 모듈을 설치하자. npm install --save nodemailer 본인이 원하는 위치에 아래와 같은 코드를 작성하고 실행 하면 끝.. const nodemailer = require(`nodemailer`); // nodemailer transport 생성 const transporter = nodemailer.createTransport({ service: `gmail`, port: 465, secure: true, // true for 465, false fo..
-
[winston] How to log as daily rotate fileBackend/NodeJS 2019. 12. 20. 17:14
winston으로 날짜별 파일에 로그 기록하는 방법 사용 모듈: winston-daily-rotate-file timestamp 커스텀: [node.js] - [winston] How to customize timestamp format. (to local timezone) import moment from "moment"; const fecha = require("fecha"); const winston = require("winston"); require("winston-daily-rotate-file"); const format = winston.format; const { combine, label, prettyPrint, colorize } = format; // It's customized t..
-
[winston] How to customize timestamp format. (to local timezone) 날짜 시간 포맷을 로컬 타임존으로 변경하기Backend/NodeJS 2019. 12. 20. 16:17
Winston에서 날짜 시간 포맷을 로컬 타임존으로 변경 하기! 나의 node.js 프로젝트에 winston을 적용하는 과정에서 로그 메시지의 시간을 기록하는데 timezone이 utc 기준 시간으로 기록이 되었다. 그래서 timestamp를 커스터마이징을 했다. winston 깃허브에서 사용 예를 보면 아래와 같다. timestamp 타임존이 로컬 기준이 아니라 시간이 맞지 않는다. // 원본 소스 const { format } = require('winston'); const { combine, timestamp, label, prettyPrint } = format; const logger = createLogger({ format: combine( label({ label: 'right meow!..
-
How to use Winston to log node application with telegram.Backend/NodeJS 2019. 12. 19. 18:47
I use winston-telegram How get telegram bot token & chatId : LINK Example: const wstlogger = require("winston"); const TelegramLogger = require("winston-telegram"); wstlogger.add(new TelegramLogger( { token: process.env.TELBOT_TOKEN, chatId: process.env.TELBOT_CHATID, level: "warn", unique: true, formatMessage: function (options: any) { let message = options.message; if (options.level === "warn"..
-
[node] express compression 메모리 최적화 (memory optimization)Backend/NodeJS 2019. 12. 18. 11:57
현재 내 express 서버의 메모리 용량이다. 메모리를 한번 줄여보고자 한다. node.js express에서 가장 흔히 쓰는 방법이 expression 이다. 간단하게 gzip을 적용한다 생각하면 된다. expression 설치는 아래 링크에서 확인! compression github 소스에 적용시키고 // index.js import compression from "compression"; import express from "express"; ...... app.use(compression()); ..... 빌드 후 실행을 시켰더니 조금 떨어지는듯 했다. 몇시간 지나니 다시 비슷해졌다.. 이 글을 쓰는 와중에 더 올라갔다.. ※참고로 서버 요청은 하나도 없었다. 그리고 하루를 더 보냈다. serv..