221221_TIL

reggias·2022년 12월 21일
0

I learned

목록 보기
21/62
post-custom-banner

강의보고 따라하기 프로젝트 시작

  1. 폴더 만들고 프로젝트 시작하기
  2. 터미널에서 npm init -y 실행
    -> npm을 통한 package.json 파일 만들기
  3. 터미널에서 npm i(또는 install) express 실행
    -> node_modules, package-lock.json 파일 만들기
  4. 터미널에서 npm install mongoose 실행
    -> mongoose 사용하기위해 설치
  5. 메인 폴더에서 app.js 파일 만들기
    -> 아래 코드를 붙여넣기
const express = require("express");

const app = express();
const router = express.Router();

router.get("/", (req, res) => {
  res.send("Hi!");
});
app.use("/api", express.json(), router);

app.listen(8080, () => {
  console.log("서버가 켜졌어요!");
});

-> 1~4 진행
6. assets 폴더를 만들어 html, css 등 넣기7. 정적인 파일에 대해서 사용자들에게 제공을 해주기 위해(assets 파일을 서비스해주기위해) static 미들웨어를 추가해준다.
-> 5 진행
8. express.static으로 전송해주기전에 라우터(todosRouter) 구현하기

  • 메인에다가 routes 폴더 만들기
  • routes 폴더 안에 todos.router.js 파일 만들기
    -> todos.router.js 에서 6 진행

9. express.static 함수는 app.js 파일 기준으로, 입력 값(지금은 "./assets") 경로에 있는 모든 파일을 아무런 가공 없이 그대로 전달해주는 미들웨어임
app.use(express.static("./assets"));
  1. Mongoose 연결하기
  • 메인에다가 models 폴더 만들기
  • models 폴더 안에 index.js 파일 만들기
    -> 아래 코드 붙여넣기
const mongoose = require("mongoose");

// localhost의 27017 포트 번호로 MongoDB와 연결합니다.
// Database Name은 todo-demo 입니다.
mongoose.connect("mongodb://localhost:27017/todo-demo", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
})
  .then(value => console.log("MongoDB 연결에 성공하였습니다."))
  .catch(reason => console.log("MongoDB 연결에 실패하였습니다."))


const db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error:"));

module.exports = db;
  1. 내보낸 db를 받는 문법을 app.js에 추가
const db = require("./models/index.js");

에러발생 및 해결과정

  • 서버 실행 및 MongDB 연결이 되는지 확인했으나 에러발생

  • Error: Cannot find module 'mongoose'
  • ctrl+클릭으로 문제있는 코드를 가리키고 있는게 이거였음.
const mongoose = require("mongoose");
  • 구글링을 해보니 mongoose 패키지를 설치해보았느냐는 글이 있길래 설치했는지 기억이 안나서 다시 설치했더니 새로운 오류가 발생함

  • 서버는 켜졌으나 MongDB 연결에 실패했음.

(node:30216) [MONGOOSE] DeprecationWarning: Mongoose: the strictQuery option will be switched back to false by default in Mongoose 7. Use mongoose.set('strictQuery', false); if you want to prepare for this change. Or use mongoose.set('strictQuery', true); to suppress this warning.
(Use node --trace-deprecation ... to show where the warning was created)

  • 다음 내용을 번역기 돌려서 대충 경고문구를 없애고싶으면 mongoose.set('strictQuery', true); 코드를 추가하라는 말인 것 같아서 index.js에 새로운 코드를 추가하였음.
    -> 실패.

connection error: MongooseServerSelectionError: connect ECONNREFUSED ::1:27017

  • 다음 내용을 구글링했더니 IP주소의 문제임을 알 수 있었음. localhost를 127.0.0.1로 변경했더니 해결되었음.
  • 근데 mongoose.set('strictQuery', true) 어쩌구 하던거는 없어지지않았다...
  • 일단 서버와 DB연결은 되니 무시하기로 하였다.
profile
sparkle
post-custom-banner

0개의 댓글