인프런 커뮤니티 질문&답변

recyon님의 프로필 이미지

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기

Boiler Plate 강의

문의좀 드립니다.

작성

·

3.4K

0

mongoose.connect(config.mongoURI,{
    useNewUrlParser:true,useUnifiedTopology:true,useCreateIndex:true , 
    useFindAndModify : false
}).then(() => console.log('MongoDB Connected...'))
.catch(err => console.log(err))

강의 잘듣고 있습니다. 

mongoose.connect('mongodb+srv://.......',

위에것은 에러 안나지만 아래로 하면 에러가 납니다.

어떻게 해결해야 하나요?

 config.mongoURI

하면

MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.

    at NativeConnection.Connection.openUri (C:\boiler-plate\node_modules\mongoose\lib\connection.js:582:11)  

    at Mongoose.connect (C:\boiler-plate\node_modules\mongoose\lib\index.js:335:15)

    at Object.<anonymous> (C:\boiler-plate\index.js:18:10)

    at Module._compile (internal/modules/cjs/loader.js:1138:30)

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)

    at Module.load (internal/modules/cjs/loader.js:986:32)

    at Function.Module._load (internal/modules/cjs/loader.js:879:14)

    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)

    at internal/main/run_main_module.js:17:47

답변 19

6

저도 동일한 문제로 계속해서 에러메시지를 보면서 검색도 해보고, 패키지를 다시 설치도 해보고 했습니다. 그러다 찾아서 해결했습니다. 제 사례를 공유해 드리겠습니다.

선생님의 코드에 보면 mongoose 부분이 이렇게 되어 있었습니다. (깃허브에도 그렇게 되어 있었고요.)

.connect(config.mongoURI, {

그런데 dev.js에는 MONGO_URI 라고 되어 있지요. 그래서 아래와 같이 바꾸니 제대로 연결되네요.

.connect(config.MONGO_URI, {

공부하시는 분께 혹시 도움이 될지 몰라 늦었지만, 답변 달아봅니다. 결국 오타가 많은 부분에 영향을 줄 수 있다는 것을 다시 한번 느끼게 됩니다. 이 문제로 제가 며칠을 검색하고 머리아파 했거든요. 

열공 하세요... 

우와 이거였다니 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
왜 연결이 안되는거지  한참  생각했어요

2

저는 dev에서 참조했는데도 defined 떠서

그냥 url을 박았습니다.

1

저도 같은 문제로 고민하다가, 

 

console.log("config", config.mongoURI) 

부분이 찍히지 않는건, key.js 나 index.js, dev.js 에서 오탈자가 있어서 안되는 것 같아서,

확인해보니 역시 오탈자 문제였습니다ㅠ

같은 문제로 에러나시는 분들은 확인해보세요 :)

1

recyon님의 프로필 이미지
recyon
질문자

일단 모르겠어서 그냥 ㅍmongoose.connect('mongodb+srv://.....

이렇게 해서 연결잘되고 regist는 됩니다만

login은 안되네요.\

하시라고 하신대로  //jsonwebtoken 이용해서 token생성하기

   var tokenjwt.sign(user._id.toHexString(),'secretToken')
이렇게 했습니다.

0

recyon님의 프로필 이미지
recyon
질문자

<dbname>은 위에 보이는 @cluster0.jzhic.mongodb.net/test test가 dbname입니다.

0

recyon님의 프로필 이미지
recyon
질문자

아 포기하고 잊고 있었는데 안돼다보니 아예 안보고 있었는데..감사합니다.아직 해보진 않았지만 답변 감사드립니다.

0

recyon님의 프로필 이미지
recyon
질문자

네 이렇게 넣었습니다

module.exports ={

    mongoURI:'mongodb+srv://solutionpms:solutionpmsXXX@cluster0.jzhic.mongodb.net/test?retryWrites=true&w=majority'
}

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

예를 들어서 보여 드리자면  

module.exports ={

    mongoURI:'mongodb+srv://hahahoho:password123@waves-z0mtr.mongodb.net/test?retryWrites=true&w=majority'

}

이런식으로 넣어주셔야 됩니다 ~ ! 

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

아 혹시   dev.js 에  어떻게  몽고 User 정보를 넣으셨는지 알려주실수 있나요 ?   비번이랑 이런거는 조금 씩 바꿔서요  ...
혹시  password 넣으실떄  <1234> 이런식으로 넣으셨나요 ??  혹시 그러셨다면  <>   이부분은 뺴주셔야 됩니다 ~~~ 

0

recyon님의 프로필 이미지
recyon
질문자

안녕하세여 답변을 제가 수정했는데요 

혹시 보시면 답변좀 죄송하지만..

일단 하시라고 한대로 해도 안되구요

2번째는 몽고DB에서 로그인이 안됩니다.

시간나실때 좀 부탁드립니다.

0

recyon님의 프로필 이미지
recyon
질문자

바쁘신데 신경써서 답변 달아주셔서 감사 드립니다.

알려주신대로 했는데

로컬에서는 제대로 generateToken으로 되어있고

혹시나 해서 다시 커밋했습니다 

user.generateTeken

var token = jwt.sign(user._id.toHexString(), 'secretToken')

둘다 제대로 되있는데 실행하니 마찬 가지입니다.

제가 어떤게 잘못된거일까요?

더운여름 건강조심하세요 불금되세요

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

아 보니깐 우선 

1///////////////


userSchema.methods.comparePassword= function(plainPassword,cb){

//planinPassword 암호화된 비밀번호
bcrypt.compare(plainPassword ,this.password,function (err,isMatch){

if(err) return cb(err),
cb(null, isMatch)


})

}

여기 부분에서   cb(err),     , 대신에  ;  이걸로 해서   에러가 나면 바로 멈춰서  돌아갈수 있게 해주시구요   

그래서  

if(err) return cb(err);

이렇게 돼겠죠 ~ !

2/////////////// 

var token = jwt.sign(user._id, 'secretToken')

위에것은 아래 것 처럼 toHexString()을 붙여주세요 ~ ! 

var token = jwt.sign(user._id.toHexString(), 'secretToken')


3///////////////

user.generateTeken((err,user)=>{
if(err) return res.status(400).send(err);
//토큰을 저장한다.어디에?쿠키,로컬스토리지
res.cookie("x_auth",user.token)
.status(200)
.json({loginSuccess:true,userId: user._id})

})

여기보시면  오타가 있으신데   generateTeken 말구 

generateToken 이렇게 해주세요 ^^ 

0

recyon님의 프로필 이미지
recyon
질문자

아 그부분은 ignore해놓아서요 커밋했습니다.

질문답변이 강사님과 저만 볼수있는지 모르겠네요

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

현재 소스 코드를 보니깐   login 부분 소스가 없는데 아직 업데이트를 안해주신것 같아요 ~ 

login 부분 까지 하신후 

git add .

git commit -m "commit" 

git push origin master 

또 해주셔야  소스가 업데이트 됩니다 ~ ! 

0

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

recyon 님 늦은 답변 죄송합니다 ㅠㅠ 
제가  하두 질문이 많다 보니  답글이 이미 달린건  답변이 된걸줄 알고 그냥 넘어가다 보니  
이렇게 늦어졌네요 ㅠㅠ !!

깃헙에 올리신 소스 여기에다가나  새로운 질문글에 올려주시면 
제가 바쁜일있어도 최대한 빨리 문제 찾아서 답변 드릴게요 ㅠㅠ  
늦어서 죄송합니다 ~~ !!! 

0

recyon님의 프로필 이미지
recyon
질문자

바쁘신거 같네요 답변좀 부탁드립니다.

0

recyon님의 프로필 이미지
recyon
질문자

예 config undefined 이렇게 나오네요.

그리고 login하면 반응이 없습니다.

어떤게 잘못된걸까요?

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

혹시  console.log('config', config.mongoURI) 이렇게 해서   나오는 값이 

mongodb+srv://.......

이 값과 같은 값인지 봐주실수 있나요 ~ ?

recyon님의 프로필 이미지

작성한 질문수

질문하기