NodeJS는 가장 널리 쓰이는 백엔드 환경이다. 그만큼 보안 이슈도 많고 보안 관련 프레임워크도 다양하다. 이 포스트에서는 NodeJS의 보안을 향상할 수 있는 기초적인 방법을 소개할 예정이다. 1. NPM audit npm 모듈의 보안 취약점을 자동으로 진단해주고 모듈을 최신 버전으로 업데이트해주는 기능이다. 프로젝트 디렉터리에서 요청하면 된다. npm audit 2. ngnix 사용 nodejs를 80, 443포트로 바로 노출시키면 여러 보안 이슈에 직면할 수 있다. 포트는 3000으로 해놓고 ngnix proxy 기능을 사용해서 뒤에 숨겨주자. 또한 letsencrypt를 사용해서 인증서를 발급받기에도 수월해진다. 3. Helmet 보안 모듈 적용 express 프레임워크 사용시 헤더 설정으로 알..
Nodejs
SASS 기존 웹페이지에 스타일을 적용하기 위해서는 CSS로 하나하나 변경해주어야 하는 번거로움이 있다. 이 같은 CSS의 개발 편의성을 높이기 위해 등장한 SASS, 프리프로세서 스크립트 언어이다. CSS의 경우 HTML환경에 style 태그만 지정해주면 바로 로드가 되는데 이 SASS란 녀석은 그렇지가 않다. 사용하기 전에 CSS로 컴파일하는 과정이 필수다. 그래서 보통 웹팩과 함께 사용된다. 1. 필요 라이브러리 설치 npm i webpack webpack-cli sass sass-loader style-loader mini-css-extract-plugin css-loader 설치를 완료해주면 웹팩 설정파일을 만들어준다. 2. webpack.config.js import MiniCssExtract..
winston 설치 및 설정 아래 명령어를 입력해서 설치해줍니다. npm i winston 코드 설정 import winston from 'winston'; import dayjs from 'dayjs'; const messageSymbol = Symbol.for('message'); const colorset = { "INFO": "\x1b[34m[ %s ]\x1b[0m", "ERROR": "\x1b[31m[ %s ]\x1b[0m", "WARN": "\x1b[33m[ %s ]\x1b[0m" } export async function init () { winston.configure({ level: 'info', format: winston.format.combine( winston.format(func..
ERROR in ./frontend/public/js/handle.js 10:0-31 export 'default' (reexported as 'Feeds') was not found in './feeds.js' (possible exports: Feeds) webpack 5.72.0 compiled with 1 error in 112 ms 웹팩에서 클래스를 임포트 할 때 위와 같은 에러가 뜰 수 있습니다. 이때 임포트 할 클래스를 export default class로 설정해주시면 에러가 해결됩니다. ❌ 에러 코드 export class Feeds { constructor(token) { this.token = token } ... } 👍 수정 코드 export default class Feeds { ..
fs모듈에서 폴더를 삭제하고 싶을 때 사진과 같은 에러가 뜨며 정상적으로 삭제되지 않는 경우가 있습니다. 에러 화면에서 볼 수 있듯이 폴더 내에 파일이 있으면 에러를 뿜게 됩니다. 이때 강제적으로 제거할 수 있는 방법이 있습니다. fs.rmdir(directory, { recursive: true, force: true }, (error) => { if (error) { return { isremoved: 0 } } else { return { isremoved: 1 } } }); { recursive: true, force: true } 를 설정으로 추가해주면 됩니다.
https://devent.tistory.com/141 NodeJS 템플릿 개발기 I. 개발 동기 개발 동기를 3가지로 정리하자면 반복적인 코드 귀찮음 예) 로그인/인증 로직 라우터 몰빵 습관 개선 의지 내가 짠 코드 오픈소스화 '그동안 발로 짠 코드가 많아서 이번 기회에 devent.tistory.com 🖥 바퀴를 재발명하지 말자 앞선 글에 나와있듯이 자동차를 만들기 위해 바퀴를 재발명할 필요는 없다. 반복적인 일을 줄이기 위해서는 한 번 발명했던 기술을 공식화하여 누구나 쉽게 사용할 수 있도록 해야 한다. 마치 수학자들이 수학 공식을 만들듯, 개발자 또한 템플릿화를 해놓으면 편하다. 대부분의 상용 서비스들은 고만고만하다. 커뮤니티, 채팅 앱, 정보공유 서비스 등등 무수한 웹서비스들은 모두 프론트/백엔..
I. 개발 동기 개발 동기를 3가지로 정리하자면 반복적인 코드 귀찮음 예) 로그인/인증 로직 라우터 몰빵 습관 개선 의지 내가 짠 코드 오픈소스화 '그동안 발로 짠 코드가 많아서 이번 기회에 좋은 코드를 짜는 습관을 만들고 싶었다.' II. 개발 목적 서비스 개발에서 모듈화와 클린 코드의 중요성은 언급하지 않아도 알 수 있다. 클린 코드는 코드의 불필요한 재생산을 막아주어 안정적인 서비스 개발이 가능해진다. 그럼에도 프로젝트의 구조를 생성하고 기본 기능을 처음부터 다지기란 쉽지 않다. Github에는 템플릿 기능이 있다. 오늘은, Github를 활용하여 NodeJS + MySQL + ExpressJS + RESTApi... 를 포함한 기본 템플릿 프로젝트 개발 기를 소개하고자 한다. 서비스 레포는 아래 ..