Node.js Docker로 배포하기
·
Node.js/실험실
Mafia Game - 역대글▶ Node.js Docker로 배포하기▶ Next.js Docker로 배포하기▶Github Actions으로 배포 자동화▶ 첫 번째 토이 프로젝트를 완료하고 토이 프로젝트로 마피아 게임을 만들었는데, 클라이언트끼리 통신을 위해서 웹소켓 서버가 필요했다. 그래서 호다닥 만든 다음 실제로 사용하기 위해서 배포를 진행하려고 한다.  이때 Docker를 사용하는 이유는 하나의 서버에 여러 서비스를 배포할 생각이기 때문이다. (이것 저것 배포하는 실험실?)Linux Ubuntu 24.04 버전을 사용하고 있는 환경에 Docker를 설치까지는 선행으로 진행했고 이어서 배포를 하려고 한다.  Docker File1. Base Image 선택FROM node:20.16-alpine3.19..
[Node] Google Analytics 데이터 불러오기
·
Node.js/실험실
Google Analytics는 홈페이지에 접속한 사용자에 대한 정보를 확인할 수 있다. 단순 방문수부터 접속한 기계, 방문 시간 등 많은 정보를 얻을 수 있다. 이런 정보를 홈페이지의 대시보드에서도 확인할 수 있으면 아주 편할 것이다. 그런데 생각보다 Google Analytics API를 연동하는 방법을 찾기 어려워서 직접 작성하려고 한다. 버전은 UA가 아닌 이번에 변경된 GA4를 기준으로 정리한다. Google Cloud Platform 구글에서 제공하는 API를 사용하기 위해서는 기본적으로 Google Cloud Platform을 사용해야한다. 나는 이것저것 테스트를 한다고 프로젝트가 있지만 없다면 새 프로젝트를 만들어서 진행한다. 프로젝트를 만들면 사용할 API 기능을 허용해줘야 한다. API..
[Node.js] TypeScript 와 Express
·
Node.js/실험실
이번에는 타입스크립트와 Express를 함께 세팅하는 방법을 정리하고자 한다. Express 프로젝트 생성 npm install -g express-generator 직접 Express를 구성해도 상관없지만, express-generator를 사용하면 간단하게 환경 구성이 가능하기 때문에 사용한다! 패키지 설치 npm install --save-dev nodemon 코드를 작성하면 바로바로 변경사항을 적용하기 위해서 nodemon을 사용한다. npm install --save-dev @types/node @types/express @types/morgan @types/debug @types/cookie-parser @types/http-errors ts-node typescript @types/node ..
[Node.js] Sequelize is not associated
·
Node.js/버그
시퀄라이즈를 사용하고 있는 어느날,,,, join을 위해서 include 옵션을 findAll에 주었다. 하지만! product와 product_img가 서로 모르는 친구들이라고 한다... 분명 나는 squelize auto를 사용해서 init-models.js가 자동으로 만들어지고 그곳에서 잘 설정이 되어있다... 구글에 검색을 해봐도 외국인형들도 답을 주지 않은 상황!! 과감한 결단을 하였다. fs.readdirSync(__dirname) .filter((file) => { return ( file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".js" ); }) .forEach((file) => { const model = requi..
[Node.js] Express ORM 세팅해보기
·
Node.js/실험실
설치 npm install mysql2 sequelize sequelize-cli mysql2는 node와 mysql의 연결을 위해서 사용하는 패키지 sequelize는 ORM을 이용해서 데이터베이스를 다룰 수 있는 패키지 sequelize-cli는 데이터베이스 작업을 sequelize와 연동해서 터미널에서 수행하게 해주는 패키지 초기화 npx sequelize init 초기 세팅을 위해서 사용하는 패키지 config/config.json models/ migrations/ seeders/ 4개의 디렉토리가 만들어진다. config/config.json 우선 json 파일이면 env로 설정을 불러오지 못한다. 그러므로 간단하게 수정을 한다. // config/config.js require("dotenv..
[Node.js] Express Passport
·
Node.js/기능
이번에 깃허브 OAuth를 이용해서 로그인을 구현하려고 한다. 해당 부분에 대해선 나중에 다시 다룰 것 그때 passport를 사용할 것 같아서 이번에 한번 이해 겸 공부해보려고 한다. Passport ? Node.js의 Express에서 사용하는 인증 미들웨어이다. Session을 사용해서 사용자 정보를 저장하고 쿠키를 통해서 식별한다. 당연히 우리가 직접 사용자 인증과 로그인을 구현할 수 있지만, 단기간에 모든 보안 이슈를 해결할 수 있을까? 물론 가능하다. 하지만 그것을 구현하기 위해서 시간이 많이 걸릴 것이다. 그래서 Passport를 사용하면 빠른 시간에 기능을 구현할 수 있다. 그리고 Passport에는 다양한 strategy가 존재한다. strategy는 전통적인 로컬 인증 방법을 포함해서 ..
[Node.js] Express에 Webpack 구현하기
·
Node.js/실험실
0. 준비사항 본인은 프로젝트를 구성할 때 express-generator를 사용하기 때문에 먼저 설치를 해야한다. npm i -g express-generator express-generator는 자동으로 express 환경울 구성해주는 멋진 도구이다. 1. npm 프로젝트 생성 // express 프로젝트명 --view=템플릿 express webpackProject --view=ejs cd webpackProject npm i express-generator를 설치하면 express 명령어를 사용할 수 있는데, 원하는 프로젝트명을 입력하고 원하는 템플릿을 입력해주면 된다. 템플릿에는 pug, ejs 등이 있는데, 본인은 pug알못이기 때문에 ejs를 사용해서 설치했다. 명령어를 실행하면 위와 같이 ..
[Node.js] Express set "views"
·
Node.js/실험실
Express 환경에서 webpack을 적용할 때 app.use(express.static(path.resolve(__dirname, "public"))); 이렇게 설정 해주었다. 그리고 views는 app.set("views", path.join(__dirname, "views")); app.set("view engine", "ejs"); 같이 설정했다. 그다음에 프로젝트를 실행하고 localhost:3000으로 접속하니 /views 폴더에 있는 index.ejs가 실행되는 것이 아닌 /public에 있는 index.html이 실행되는 것이였다. 왜그런지 고민해봤는데, app.use(express.static(path.resolve(__dirname, "public"))); 설정에 경로가 해당 이름의 ..