작성
·
559
0
아마 파이어베이스에서 channels 의 하위 컬렉션 members 생성시의 에러인것 같은데
실력부족입니다
https://github.com/dongguntechnology/rn_chat
Possible Unhandled Promise Rejection (id: 0): FirebaseError: Function doc() cannot be called with an empty path.
답변 6
0
0
안녕하세요 shafeel2님,
해당 메시지는 에러가 아니라 경고(warning)입니다.
동작에는 아무 영향을 주지 않습니다.
해당 메시지는 파이어베이스와 관련된 문제로 내부에 있는 파일중 JSTimer.js 파일에서 MAX_TIMER_DURATION_MS의 값인 60*1000 보다 오래 걸려서 나타나는 경고 입니다.
그냥 무시하고 진행해도 문제가 없습니다.
파일을 확인하고 싶으면 node_modules/react-native/Libraries/Core/Timers/JSTimer.js 을 확인해 보시면 됩니다.
즐거운 하루 되세요
감사합니다.
0
이런 또 에러가 ...
Setting a timer for a long period of time, i.e. multiple minutes, is a performance and correctness issue on Android as it keeps the timer module awake, and timers can only be called when the app is in the foreground. See https://github.com/facebook/react-native/issues/12981 for more info. (Saw setTimeout with duration 366579ms)
0
안녕하세요 shafeel2님,
collectionRef를 파라미터로 받는 doc 함수의 설명을 보면,
https://firebase.google.com/docs/reference/js/firestore_lite.md?authuser=0#doc_2
path 파라미터의 타입이 문자열로 되어 있는 것을 볼 수 있습니다.
따라서, 코드를 다음과 같이 수정하면 됩니다.
파이어베이스에 대한 내용은 파이어베이스 공식 문서를 확인하시기 바랍니다.
즐거운 하루 되세요
감사합니다.
0
코드수정 후 실행하니
이래 에러가 뜨는군요 죄송합니다
[Unhandled promise rejection: TypeError: _n9.indexOf is not a function]
0
안녕하세요 shafeel2님,
channels하위에 members라는 컬렉션은 없고, messages만 있습니다.
https://github.com/dongguntechnology/rn_chat/blob/main/screens/Channel.js#L47
에 있는 createMessage의 message파라미터에는 Input 컴포넌트에 입력하는 값이 전달됩니다.
즉, 32번째 줄에 있는 message._id는 undefined가 됩니다.
따라서, doc() 함수의 두번째 파라미터에 undefined가 전달되고, 빈 경로로 호출할 수 없다는
Function doc() cannot be called with an empty path.
에러가 나타납니다.
파이어베이스의 버전이 변경되면서 사용법이 강의와 약간의 차이가 있습니다.
const createMessage = async ({ channelId, message }) => {
고유한 값으로 id가 필요하므로, Date.now()로 현재 timestamp 를 받아와서 id와 createdAt으로 사용하면 문제없이 동작할 것으로 예상됩니다.
현재 작성하신 코드에서 동작하게 하시려면 이렇게 하는 방법이 있습니다.
또는, 현재 듣고 계신 Chat App -part2 의 "채널 화면" 강의에서 조금더 진행하시면, GiftedChat을 이용해서 자동으로 message를 id가 포함된 객체로 전달하도록 작성합니다. 현재 에러나는 부분은 무시하시고 진행하셔도 크게 문제는 없습니다.
즐거운 하루 되세요
감사합니다
shafeel2님 코드로 테스트를 해도 동일한 에러가 발생하지 않습니다.
모두 종료하고 재시작해보시기 바랍니다.
계속해서 같은 현상이 발생하면 개발 환경 및 테스트 기기 등등에 대한 정보를 함께 적어주세요.
다른 오류를 발견했는데 오타가 있네요
Channel.js 파일에서 <GiftedChat> 에서 messages={messages}로 하셨는데, 여기서 사용한 messages가 선언되어 있지 않습니다.
48line에 const [message, setMessage] .. 가 아니라
const [messages, setMessages]... 가 되어야 합니다.
이 오타 외에 다른 문제는 보이지 않습니다.
에러가 났다고 바로 질문을 올리기 보다는 스스로 해결하려는 노력을 해보는 것을 추천합니다.
그래야 실력이 늘고, 나중에 비슷한 문제가 발생했을 때 해결할 수 있는 능력을 기르게 됩니다.
에러 메시지를 이용해 검색을 해보는것을 추천합니다.
그리고 영상을 차분하게 다시 보면서 어떤 부분에서 실수했는지 확인해 보시기 바랍니다.
즐거운 하루 되세요
감사합니다.