게시판 - 프로젝트 생성 및 navbar

소스코드

이 게시물에는 코드작성이 포함되어 있습니다. 소스코드를 받으신 후 진행해 주세요. MEAN Stack/개발 환경 구축에서 설명된 프로그램들(git, npm, atom editor)이 있어야 아래의 명령어들을 실행할 수 있습니다.

git clone https://github.com/a-mean-blogger/board.git
cd board
git reset --hard 5ee26ee
npm install
atom .

- Github에서 소스코드 보기: https://github.com/a-mean-blogger/board/tree/5ee26ee10f14f4f1f566fdefbf0dac7ef088cd02


/*
 * 이 강의는 2016년 처음 작성되었으나 2020년에 모든 코드와 강의가 update되었습니다.
 * 2016년 게시물은 Archive되었습니다. -> 2016년 버전 보기
 */

지금까지 hello world 강의, 주소록 만들기 강의를 통해서 CRUD사이트를 만들고 DB에 데이터를 저장하는 법에 대해 알아보았습니다. 게시판 만들기 강의에서는 게시물-작성자 와 같은 관계를 만드는 법과, 로그인, 회원가입같은 좀 더 실용적인 기능들에 대해서 배워봅시다.

이번 포스팅에서는 새 프로젝트를 생성하고 아래와 같이 navbar 및 기본 static 페이지들을 만들어 봅시다. 주소록 만들기 강의 때와 거의 같으므로 복습이라고 생각하고 봐주세요. 새로운 부분은 웹폰트를 사용하는 것 뿐인데요, 온라인상의 폰트를 가져와서 내 웹사이트에서 사용하는 것입니다.

기본 페이지는 welcome, about 두개입니다. 게시판에 관련된 기능들은 다음 강의부터 본격적으로 만듭니다.

프로젝트 생성

프로젝트 생성에 앞서, 해당 프로젝트에서 사용할 DB를 생성하고 환경변수에 등록해 줍시다. 주소록 강의와 마찬가지로 "MONGO_DB"라는 환경변수에 DB Connection String을 담았습니다.

프로젝트 폴더를 만드는데, 이번에는 npm init 명령어에 --yes 옵션을 넣어서 사용해 봅시다.

$ npm init --yes

npm init에서 모든 항목을 skip하고 기본값으로만 구성된 package.json을 만드는 옵션입니다.

atom 에디터를 실행합시다.

$ atom .

폴더구조


Package 설치

ejs, express, mongoose, body-parser method-override package들을 설치해 줍시다.

$ npm install --save ejs express mongoose body-parser method-override

코드 - js

// index.js

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var app = express();

// DB setting
mongoose.connect(process.env.MONGO_DB);
var db = mongoose.connection;
db.once('open', function(){
  console.log('DB connected');
});
db.on('error', function(err){
  console.log('DB ERROR : ', err);
});

// Other settings
app.set('view engine', 'ejs');
app.use(express.static(__dirname+'/public'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.use(methodOverride('_method'));

// Routes
app.use('/', require('./routes/home'));

// Port setting
var port = 3000;
app.listen(port, function(){
  console.log('server on! http://localhost:'+port);
});
// routes/home.js

var express = require('express');
var router = express.Router();

// Home
router.get('/', function(req, res){
  res.render('home/welcome');
});
router.get('/about', function(req, res){
  res.render('home/about');
});

module.exports = router;

코드를 한번 쭉 보시면서, 전부 이해가 되는지 한번 확인해 보세요. 주소록 만들기 강의에서 모두 설명된 코드들만 사용되었습니다. 만약 이해가 안되는 부분이 있다면 주소록 만들기 코드를 다시 한번 복습해 주세요.

코드 - ejs

<!-- views/partials/head.ejs -->

<meta name="viewport" content="width=device-width,initial-scale=1">

<!-- jquery & bootstrap -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

<!-- web font --> <!-- 1 -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap" rel="stylesheet">

<!-- my css -->
<link rel="stylesheet" href="/css/master.css">

<title>My Website</title>

1. 웹폰트 부분입니다. 여기서 잠시, 구글 웹폰트 적용방법을 알아봅시다. 구글에서 제공하는 웹폰트는 https://fonts.google.com 에서 검색할 수 있습니다.

검색창에서 폰트이름으로 검색을 할 수도 있고, 아니면 리스트에서 마음에 드는 폰트를 찾아서 사용할 수도 있습니다. 저는 위 스크린샷 우측 하단에 보이는 open sans 라는 폰트를 사용하였습니다.

폰트에 대한 상세한 설명이 나옵니다. 해당 폰트를 사용하고 싶으면 우측 상단에 'SELECT THIS FONT' 를 눌러줍니다.

그러면 우측 하단에 '1 Family Selected'라고 검은 박스가 생깁니다. 여기서 family는 font family를 뜻합니다. 하나의 폰트라도 그안에 폰트 두께라든가, 기울기라든가 등등의 font들을 포함하고 있으므로 font family라고 부릅니다. '1 Family Selected' 박스를 누릅니다.

Embed Font 항목은 font를 어떻게 내 프로젝트에 가져오는지를 설명하고 있습니다. 회색 박스 안의 내용을 html head에 넣으라는 설명입니다. head.ejs의 1번 내용이 바로 여기서 가져온 코드입니다. Specify in CSS 항목은 css파일에서 어떻게 해당 폰트를 사용할지를 알려줍니다.

<!-- views/partials/nav.ejs -->

<nav class="navbar navbar-expand-sm navbar-light bg-light mb-3">
  <div class="container">
    <div class="navbar-brand">My Website</div>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav">
        <li class="nav-item"><a href="/" class="nav-link">Home</a></li>
        <li class="nav-item"><a href="/about" class="nav-link">About</a></li>
      </ul>
    </div>
  </div>
</nav>

네비게이션 메뉴는 주소록 만들기 예제와 구조가 같습니다.

<!-- views/home/welcome.ejs -->

<!DOCTYPE html>
<html>
  <head>
    <%- include('../partials/head') %>
  </head>
  <body>
    <%- include('../partials/nav') %>

    <div class="container mb-3">

      <div class="jumbotron">
        <h1>My Website</h1>
        <P>제 웹사이트를 방문해 주셔서 감사합니다!</p>
      </div>

    </div>
  </body>
</html>

jumbotron이라는 class를 사용하였는데, 이는 bootstrap에서 제공하는 컴포넌트입니다. https://getbootstrap.com/docs/4.4/components/jumbotron 에서 자세한 설명을 볼 수 있습니다. 이처럼 bootstrap 사이트에서 맘에 드는 component가 있으면 그냥 가져다가 쓰시면 됩니다.

<!-- views/home/about.ejs -->

<!DOCTYPE html>
<html>
  <head>
    <%- include('../partials/head') %>
  </head>
  <body>
    <%- include('../partials/nav') %>

    <div class="container mb-3">

      <h2 class="mb-3">About</h2>

      <P>이 사이트는 <a href="http://a-mean-blog.com/ko/blog/Node-JS-첫걸음/게시판-만들기">http://a-mean-blog.com/ko/blog/Node-JS-첫걸음/게시판-만들기</a>에서 작성되었습니다!</p>

    </div>
  </body>
</html>

코드 - css

/* public/css/master.css */

body {
  font-family: 'Open Sans', sans-serif;
}

'Open Sans' 폰트를 body에대가 적용해 주었습니다. 이렇게 body에 css를 설정하면 전체 사이트에 적용됩니다.

실행결과

nodemon으로 웹사이트를 실행합니다.

$ nodemon

http://localhost:3000 에 접속하면 jumbotron으로 만들어진 welcome 화면이 보입니다. 주소록 예제와 비교해서 폰트가 달라진 것이 보이나요? 폰트하나만 바꿔도 사이트의 전반적인 느낌이 달라집니다.

about page입니다.

모바일용 화면도 확인해 봅시다

작은 화면에서는 햄버거 버튼이 생기고, 이 버튼을 누르면 메뉴가 열립니다.

마치며..

이번 강의에서는 본격적으로 게시판 개발에 들어가기 기본사이트 구조를 만들었습니다. Node.JS + Express로 웹사이트를 만들면 항상 위와같은 세팅을 우선적으로 하고 진짜 개발을 하게 되므로 여러분들이 사이트를 만들때도 이 코드를 가져가서 사용하셔도 됩니다.

댓글

C
Ch Park 2020.03.15
감사합니다
I
Ian H 2020.03.16
@Ch Park,
감사합니다^^
포로마 2020.09.11
안녕하세요. 블로그 강의 정말 잘 읽고 있습니다. 감사드립니다.
제가 궁금한점이 있는데, 이 글에서 사용하신 부트스트랩 말고 제가 제작한 CSS파일을 연결할 경우 웹상에 뿌려지지 않는데  방법이 있을까요??
설정하신 그대로 부트스트랩을 사용했을 경우에는 CSS 적용이 되어 나오는데, 제가 설정을 하면 바뀌질 않네요...
I
Ian H 2020.09.11
@포로마,
안녕하세요^^
1. index.js 파일에 app.use(express.static(__dirname+'/public')); 코드가 있는지,  2. views/partials/head.ejs 파일에 <link rel="stylesheet" href="/css/master.css"> 코드가 있는지 3. public/css/master.css 파일 이름, 경로이 정확한지 4. public/css/master.css 파일안에 css 코드가 정확한지
를 다시 한번 확인해 보세요.
만약 정 모르시겠으면 github에 코드를 올리시고 주소 알려드리면 직접 봐드릴게요
포로마 2020.09.14
@Ian H,
해결했습니다!!! 스태틱 폴더안에 말씀하신것처럼 /css/master.css로 해야하네요... 기존 html, css 공부했던것처럼 폴더 경로까지 잡아버리니 인식이 안됐네요. 또한, ejs에 직접적으로 링크 추가하니 인식해서 기존 html 사용했던 것처럼 사용할 수 있을것 같습니다. 정말 감사드립니다. 앞으로 게시판 만드는법도 많이 배워가겠습니다!!
I
Ian H 2020.09.14
@포로마,
/public을 static으로 해주었으므로 서버에는 /public 경로가 노출되지 않고 /public의 하위폴더들만 노출됩니다. 또한 ejs파일들은 템플릿 파일들로 ejs파일 위치와 css파일의 상대 경로는 의미가 없습니다.
해결하셨다니 다행입니다^^
어윽 2020.09.18
안녕하세요.. 잘 보고 있습니다. 정말 감사합니다. 질문 부탁드립니다. 1. 코드 중에 get()이 index.js에 있지않고 home.js에 분리가 되어 있는데 서로 어떻게 연결이 된 건지 궁금합니다. 2. app.use('/', require('./routes/home')); 코드가 무슨 역할을 하는지 궁금합니다. 3. <%- include('../partials/nav') %>에서 <%- %>의 역할이 궁금합니다 <%= %>, <% %>는 동작을 잘 안하는 거 같습니다. 4. 위에 있는  include()는 ejs의 메서드인지 nodejs의 메서드인지 어디서 와서 동작하는 메서드인지 궁금합니다
I
Ian H 2020.09.18
@어윽,
안녕하세요^^ 1&2. app.use('/', require('./routes/home'));를 통해 index.js와 home.js가 연결됩니다. 자세한 내용은 https://www.a-mean-blog.com/ko/blog/Node-JS-첫걸음/주소록-만들기/주소록-Module만들기 강의를 참고해 주세요. 3. ejs 공식 문서(https://ejs.co/#docs)의 Tags 항목을 보시면 <%는 control-flow를 위해서만 사용되고 output이 없으며, <=는 HTML escaped를 포함한 output을, <=는 unescaped value, 즉 raw 값을 out한다는 것을 알 수 있습니다. 4. include() ejs에서만 사용할 수 있습니다.(ejs 공식 문서 (https://ejs.co/#docs)의 Includes 항목 참고) 
M
Max Rockatansky 2021.01.21
안녕하세요. 지금도 계속 블로그를 보고 정말 좋은 질의 공부를 하고 있습니다! 
다름이 아니라 express을 기반으로 게시판을 만드는 거 같은데 다 구현이 완료되면 바로 react.js에 연동이 가능할까요? 블로그 글들을 보면 리액트 대신 앵귤러를 쓰시는 것 같기도 하고요. 
제가 아직 제대로 프로젝트를 해본 적이 없어서 서버와 클라이언트의 이 둘을 연동하는 개념이 아직 추상적이네요.. 
I
Ian H 2021.01.21
@Max Rockatansky,
반갑습니다^^
이 게시판 강의의 경우 Express로 웹사이트를 전부 만들고 있습니다. Angular나 React의 경우 Express로는 REST API를 만들고,  Angular나 React로 frontend를 만들게 됩니다.
Express로 게시판 만들기는 웹사이트 제작의 전반에 대한 지식을 전달하기 위해 사용되었고 이 다음 강의인 REST API 부분을 참고하셔서 backend를 만드신 후 React로 frontend를 만드시면 되겠습니다. Angular나 React나 REST API 부분은 동일합니다.
Angular, React같은 Frontend Framework를 사용하는 경우, backend와 frontend는 완전히 독립된 두개의 프로젝트가 됩니다. 이 후 frontend app이 backend app의 REST API를 호출하여 DB를 사용하게 됩니다.
한번 해보시고 또 질문있으시면 해주세요^^
M
Max Rockatansky 2021.01.22
@Ian H,
아 그렇군요! 정말 감사합니다. 이제야 좀 이해가 가네요!
M
Max Rockatansky 2021.01.22
@Ian H,
아 또 질문드려서 죄송하지만 그럼 Express로 게시판 만들기를 제가 끝까지 완강하면 게시판 만들기에서 썼던 코드들을 REST API에 쓰게 활용할 수 있을까요? 
I
Ian H 2021.01.22
@Max Rockatansky,
맞습니다. 게시판 강의는 ejs로 view코드(html) 만드는 법도 들어있는데 이 부분들은 REST api로 변환하면 다 쓸모없게되니 ejs 부분은 너무 깊게 공부하지 않으셔도 됩니다.
M
Max Rockatansky 2021.01.22
@Ian H,
후...그렇군요..정말 감사합니다..이제 심란한 마음과 생각이 좀 정리가 됩니다 ...진짜 열심히 하겠습니다 ㅠㅠ
I
Ian H 2021.01.22
@Max Rockatansky,
힘내시고 또 질문있으시면 언제든지 남겨주세요^^
M
MINS 2021.02.17
안녕하세요! 좋은 강의 정말 감사합니다! 궁금한게 있는데요,, 주소록을 만들었고, 게시판을 만든 후에 이 둘을 하나의 서버에서 왔다갔다 하게 만드려면 어떤걸 참고해야 할까요? 지금 상태에서는 주소록의 index.js를 실행하고, 게시판의index.js를 실행해서 둘의 링크를 연결하는 방법밖에 생각이 나지 않아서요.. (비전공자라 질문의 요지가 잘 전달되었는지 모르겠네요 ㅎㅎ;;;)
I
Ian H 2021.02.17
@MINS,
안녕하세요! 하나의 웹사이트에 주소록과 게시판을 모두 넣고 싶으신거죠? 말씀하신대로 각각을 실행해서 서로 링크를 걸어놓으면 사실 두개의 웹사이트가 따로 실행이 되죠. 두개의 사이트가 별개이므로 로그인도 각각 따로 해야 하구요.
제대로 하려면 routers에 board와 post를 따로 만들고 index.js에서 각각의 route을 설정해줘야 합니다.
게시판 코드를 베이스로 하고 거기에다 주소록 코드를 가져와서 잘 연결해보세요. 꽤 괜찮은 연습이 될 거에요^^
M
Michael Jackson 2021.02.27
메인화면 상단의 그... header부분 home about부분을 justify-content사용 햇는데 안되서... 어떤 플러그인을 사용하신 건가요.?
M
Michael Jackson 2021.02.27
미리 스타일이 다 정해진듯하고(css파일없이 알아서 되더군요) 클래스명으로 구분을해서 작동하는것처럼 느껴지네요.
I
Ian H 2021.02.27
@Michael Jackson,
Bootstrap 4를 사용하였습니다. Home, about 부분을 정확히 어떻게 바꾸고 싶은건지 알려주시면 더 자세히 알려드릴 수 있어요
I
Ian H 2021.02.27
@Michael Jackson,
맞습니다. Bootstrap안에 css 클라스가 다 지정되어 있어요^^
M
Michael Jackson 2021.02.28
@Ian H,
그래서 일반적인 css로 좌우정렬이 안먹혀서 스택오버플로우에서 삽질했더니 좀 조금이나마 알아냈슴다.
I
Ian H 2021.02.28
@Michael Jackson,
How to ... with bootstrap 4? 등으로 검색하면 쉽게 알아낼 수 있습니다^^
고라파덕 2021.04.20
안녕하세요 주소록부터 게시판까지 질 좋은 강의 정말 잘 보고 있습니다!!!!!
잘 만들어진 코드를 직접 쳐보고 실행도 해보면서 정말 재밌다고 느끼는 중인데요. 약간의 고민이 있다면 한편으로는 이게 정말 내 것인가? 라고 한다면 절대 아니라는 생각이 들어요. 누가 '게시판 만들어 보세요~' 하면 아무것도 못할 것 같고요.. 
정말 허접한 질문이지만, 여기에 나온 게시판을 확실히 내 것으로 만들었다! 하는 때가 언제일까요? 예를 들어 어떤 코드가 어떤 기능을 하는지 검색 없이 말할 수 있고, 이미 만들어진 게시판 코드를 보지 않고도 스스로 생각해서 복사 붙여넣기 없이 게시판 코드를 쭈우욱 짤 수 있을 때가 그럴 때라고 말할 수 있을까요??
이를 위해서 처음엔 완성된 게시판 코드를 따라 치더라도 반복적으로 게시판을 여러 개 만들면서 전체적인 구조를 익히고 코드들을 이해하는 방법이 적합할까요? 
질문이 좀 이상하지만, 개발 공부를 시작한 지 얼마 안 된 시점에서 제가 정말 잘하고 있는지, 혹시나 잘못된 방법으로 공부를 하는 거 아닌지 고민이 생겨서 질문 남기게 됐습니다..  고수님의 의견 부탁드립니다!
I
Ian H 2021.04.20
@고라파덕,
안녕하세요^^ 저는 웹사이트만드는 것을 직업으로 하고 있지만 복사/붙여넣기는 항상 사용하고 있습니다. 
Framework와 관련된 코드,
mongoose.set('useNewUrlParser', true); mongoose.set('useFindAndModify', false); mongoose.set('useCreateIndex', true); mongoose.set('useUnifiedTopology', true);
와 같은 걸 다 외우는 사람은 거의 없을 거예요.
일단 제 강의만 봐도, 게시판 강의는 주소록 강의에서 코드를 가져와서 수정/추가했고, 주소록 강의는 hello world 강의를 가져와서 수정/추가했습니다.
새롭게 추가된 부분은 공식문서 혹은 그냥 인터넷에서 검색된 것을 가져와서 수정했구요.
게시판 강의는 기본적으로 웹사이트가 가져야 할 기능들이 있습니다. route설정, DB설정, 회원가입 및 로그인, 접근제한, CRUD 예제 등. 그러므로 제가 새로운 웹사이트를 만들더라도 게시판 만들기 코드를 그대로 가져가서 수정합니다. 이외의 필요한 부분은 직접 코드를 만들기도 하고, 아니면 인터넷에서 가져와서 수정/추가합니다.
제 강의를 보시고 route설정, DB설정, 회원가입 및 로그인, 접근제한, CRUD에 대한 개념을 익히시고 제 강의의 코드를 수정해서 필요한 사이트를 만드실 수 있으면 됩니다.
한번 만든 게시판을 계속해서 다시 만드실 필요는 없구요, 주소록 강의에 로그인 및 회원가입을 넣는다든가 게시판에 추천/비추천 기능(로그인한 계정이 한 게시물에 1회에 한해 가능), 추천게시물 기능, 친구추가 기능등을 한번 직접 추가해 보세요. 물론 인터넷에 검색하고 복사/붙여넣기를 사용하셔도 됩니다. 이런식으로 응용이 가능하다면 충분합니다^^
고라파덕 2021.04.21
@Ian H,
아...!! 으아아아!!!! 어떤 느낌인지 알 거 같아요!!  지금까지 꽉 막혔던 생각 뻥 뚫린거 같아요 ㅠㅠㅠㅠㅠ ..  정성스러운 답변 정말 감사합니다!!!!
I
Ian H 2021.04.21
@고라파덕,
아니에요 질문있으시면 언제든지 댓글남겨주세요^^
김선혁 2021.05.31
지리네요.... 양질의 컨텐츠 정말 감사합니다
I
Ian H 2021.06.01
@김선혁,
방문해주셔서 감사합니다!
K
KWANGJE MOON 2021.06.04
안녕하세요 선생님! 강의와는 관련없는 nodejs 질문드려도될까요?? js파일에서 ejs파일로 배열데이터를 불러오고싶은데 어떤 방법으로 불어와야하나요?
<crawling.js> const parsing = async () => {     const html = await getHTML("아디다스");     const $ = cheerio.load(html.data);     const $itemList = $(".flea-market-article-link");
    let items = [];     $itemList.each((idx, node) => {         const title = $(node).find(".article-title:eq(0)").text();         items.push({                                                                 //items을 ejs파일로 불러가고싶습니다.             title: $(node).find(".article-title").text(),             price: $(node).find(".article-price ").text(),             img: $(node).find(".card-photo > img").attr("src"),         })     }); } parsing();
module.exports = parsing;
<price.js>-route폴더
router.get('/price', function(req, res){   res.render('main-posts/price', {     title:items.title,           //이런식으로 하니까 오류나 나네요.   }); });
I
Ian H 2021.06.04
@KWANGJE MOON,
crawling.js를 보니까 생성된 html 코드에서 값을 얻고 있는데요, 
1. 로딩 완료된 페이지에서 Parsing() 호출
2. Items 데이터로 form을 만들어 서버로 전송(submit)
3. [Post] /price 에서 items를 받아서 페이지 생성
이런 식으로 하면 될 것같습니다.
View(html)에서 생성된 데이터는 route에 바로 전송할 수 없어요. Form이나 cookie같은 걸 써야합니다
K
KWANGJE MOON 2021.06.06
@Ian H,
정말 감사합니다!!
I
Ian H 2021.06.06
@KWANGJE MOON,
방문해 주셔서 감사합니다^^
J
JamesFilm 2021.09.14
PS D:\board\board> node index.js D:\board\board\node_modules\mongoose\lib\index.js:173   if (VALID_OPTIONS.indexOf(key) === -1) throw new Error(`\`${key}\` is an invalid option.`);                                          ^
Error: `useNewUrlParser` is an invalid option.     at Mongoose.set (D:\board\board\node_modules\mongoose\lib\index.js:173:48)     at Object.<anonymous> (D:\board\board\index.js:10:10)     at Module._compile (internal/modules/cjs/loader.js:1072:14)     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)     at Module.load (internal/modules/cjs/loader.js:937:32)     at Function.Module._load (internal/modules/cjs/loader.js:778:12)     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)     at internal/main/run_main_module.js:17:47
mongoose 오류가 계속 나는게 어떻게 해야될까요 DB setting 부분 지우면 오류 안나는데.. 확인 부탁드립니다~ https://github.com/JamesPark89/board
I
Ian H 2021.09.14
@JamesFilm,
안녕하세요. 제 강의에서는 mongoose 5를 사용했는데 mongoose가 6으로 업데이트 되면서 해당 문제가 발생하였습니다.
mongoose.set('useNewUrlParser', true); mongoose.set('useFindAndModify', false); mongoose.set('useCreateIndex', true); mongoose.set('useUnifiedTopology', true);
이 부분을 지우시면 정상작동합니다.
강의속 코드도 업데이트되었어요. 제보해 주셔서 감사합니다^^
J
JamesFilm 2021.09.15
@Ian H,
해결되었습니다 좋은 강의 감사합니다~
댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP