npm install express mongoose
를 터미널에 입력해서 리액트 17.0.2 버전에서 몽구스를 설치하려 했는데
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: @testing-library/react@13.4.0
npm ERR! Found: react@17.0.2
npm ERR! node_modules/react
npm ERR! peer react@"17.0.2" from react-dom@17.0.2
npm ERR! node_modules/react-dom
npm ERR! react-dom@"^17.0.2" from the root project
npm ERR! peer react@">= 16" from react-scripts@5.0.1
npm ERR! node_modules/react-scripts
npm ERR! react-scripts@"5.0.1" from the root project
npm ERR! 1 more (the root project)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^18.0.0" from @testing-library/react@13.4.0
npm ERR! node_modules/@testing-library/react
npm ERR! @testing-library/react@"^13.4.0" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: react@18.2.0
npm ERR! node_modules/react
npm ERR! peer react@"^18.0.0" from @testing-library/react@13.4.0
npm ERR! node_modules/@testing-library/react
npm ERR! @testing-library/react@"^13.4.0" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! C:\Users\ekdh3\AppData\Local\npm-cache\_logs\2024-02-04T09_38_01_537Z-eresolve-report.txt
이런 에러가 떴습니다.
버전을 다운그레이드 했는데 testing-library의 버전이 현재 버전과 호환이 안된다는 메세지입니다.
찾아보니까 texting-libreary의 11.1.0 버전이 리액트 17.0.2의 버전과 호환된다고 합니다.
npm install @testing-library/react@^11.1.0
위 코드를 터미널에 입력해 버전을 다운그레이드합니다.
그러면 이렇게 express와 mongoose가 설치됩니다.
다음은 서버를 만들어야 하는데
Webpack 에러가 떴습니다.
이것도 종속성 문제인데
터미널에 npm uninstall react-scripts 를 입력해서 기존 react-scripts를 삭제하고
npm install react-scripts@4.0.3 로 설치하여
react-scripts의 버전을 낮춰줍니다.
하지만 이외에도 리액트 18버전과 호환성 문제가 수도 없이 발생해서
결국 그냥 18버전을 사용하기로 했습니다.
다시 프로젝트를 만들어 주고
npm install mongoose express를 입력해 설치해줍니다.
다음은 package.json에 들어가서 script의 start부분을 바꿔줘야 합니다.
이제 index.js에 MongoDB와 연결해주는 코드를 작성해줍니다.
연결에 성공하면 then 구문을 실행하고
실패하면 catch 구문에 에러를 발생합니다.
실행시켜보니 이런 에러가 발생했습니다.
MongoServerError: bad auth : authentication failed
구글링 해보니 MongoDB의 ID와 PASSWORD인증 문제였습니다.
mongodb+srv://아이디:비번@todolist.5fpaal7.mongodb.net/?retryWrites=true&w=majority
이쪽 비번 부분에 괄호가 있어서 인증이 안되었던 것입니다.
수정후 실행시켜보니
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1899:8)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: 'EADDRINUSE',
errno: -4091,
syscall: 'listen',
address: '::',
port: 3000
}
새로운 에러가 발생합니다.
이것도 구글링해보니 Port가 이미 사용중이라 뜨는 에러라고 합니다.
기존 서버를 닫고 다시 실행시켜줍니다.
드디어 MongoDB연동에 성공했습니다.
저 'MongoDB Connected...' 메세지가 얼마나 반갑던지
연동이 쉽다고 생각했는데 몇일에 걸쳐서 많은 에러들과 마주했습니다 하하
다음 시간에는 데이터베이스에서 데이터를 서버에 넘겨보겠습니다
읽어주셔서 감사합니다!
'MongoDB' 카테고리의 다른 글
[MongoDB] PostMan을 사용해서 회원가입 구현 (0) | 2024.02.13 |
---|---|
[MongoDB] Schema와 Model (0) | 2024.02.13 |
[MongoDB] Mongosh를 사용해서 데이터 관리 (0) | 2024.02.07 |
[MongoDB] MongoDB 초기 설정 (2) | 2024.01.23 |