呼叫我的 firebase 專案的 API 時,我遇到了 net::ERR_NAME_NOT_RESOLVED。我嘗試使用多個設備、兩個互聯網連接、一個 VPN、Linux、macOS、Windows 11 來排除由我的設備引起的任何錯誤。在瀏覽器上導航到 API 鏈接時,它不會超時,并且會向我提供回應。問題似乎出在使用 Firebase 提供的 httpsCallable 函式時。除了在瀏覽器中導航到它之外,firebase 上不存在被呼叫函式的日志。
這是我的代碼:
const functions = firebase.functions
console.log(functions)
const loginWithCode = httpsCallable(functions, 'loginWithCode')
loginWithCode(loginPayload)
.then((result) => {
console.log(result)
})
.catch((error) => {
console.log("ERROR CAUGHT HERE")
console.log(error)
});
我的瀏覽器控制臺的輸出:
service.ts:206 POST https://us-central1-"crowd-pleaser-75fd7",.cloudfunctions.net/loginWithCode net::ERR_NAME_NOT_RESOLVED
App.tsx:79 ERROR CAUGHT HERE
App.tsx:80 FirebaseError: internal
在firebase網頁界面直接輸入鏈接的結果:
{"error":{"message":"Bad Request","status":"INVALID_ARGUMENT"}}
有什么我遺漏的東西會造成這個問題嗎?我已經在互聯網上搜索,并在 StackOverflow 上尋找答案,但提供的所有解決方案都沒有奏效。實作的方法正是在這里的 Firebase 檔案中完成的
編輯:我的帖子請求發送到的鏈接的格式似乎很奇怪。也許這可能是問題所在?我不明白為什么它是這樣格式化的。
uj5u.com熱心網友回復:
我找到了解決問題的方法。我在編輯中的推測是正確的,httpsCallable 將發布請求發送到的 URL 格式不正確。我不確定為什么以這種方式格式化它,但是,快速的解決方案是將 getFunctions 回傳的物件的 customDomain 類屬性設定為正確的域。在我的情況下,這是通過執行以下操作來完成的:
functions.customDomain = functions.customDomain = 'https://us-central1-crowd-pleaser-75fd7.cloudfunctions.net'
上面代碼中的變數'functions'是Firebase提供的getFunctions方法回傳的class屬性
uj5u.com熱心網友回復:
事情
雖然我不是 Firebase 的專家,但問題是您使用 發出了錯誤的 HTTP 請求loginWithCode(loginPayload),至少我可以看到您的代碼沒有任何問題。
順便說一句,您正在使用:
const loginWithCode = httpsCallable(functions, 'loginWithCode')
而不是const loginWithCode = httpsCallable('addMessage')
這里描述的簡單:Google FireBase Docs
然后,制作一個 loginWithCode({ text: messageText })
此外,正如您在此處看到的:Google Firebase Docs:firebase.functions.HttpsCallable
您將能夠將任何型別的資料傳遞給 HttpsCallable 函式,因此我們在起點處結束:您發出了錯誤的 HTTP 請求。
如 HTTP 回答中所述,錯誤是:net::ERR_NAME_NOT_RESOLVED當無法決議 DNS 請求時會發生這種情況,然后域不存在,因此這一切都會導致無法發送 HTTP 請求,因為沒有路由在互聯網上發現發送它。
問題:
在解碼您發出 HTTP 請求的 url 時
service.ts:206 POST https://us-central1-"crowd-pleaser-75fd7",.cloudfunctions.net/loginWithCode net::ERR_NAME_NOT_RESOLVED
App.tsx:79 ERROR CAUGHT HERE
App.tsx:80 FirebaseError: internal
您會發現您將 HTTP 請求發送到:
https://us-central1-"crowd-pleaser-75fd7",.cloudfunctions.net/loginWithCode
如您所見,您會發現在發出 HTTP 請求時會出現問題:因為您無法"crowd-pleaser-75fd7",輸入 URL 來發出 HTTP 請求。那是產生錯誤net::ERR_NAME_NOT_RESOLVED
我不確定你到底想做什么,但我認為 HTTP 請求的正確 URL 應該是:
https://us-central1-crowd-pleaser-75fd7.cloudfunctions.net/loginWithCode
使用此 URL,HTTP 請求必須至少通過。我建議然后檢查loginPayload以解決此問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/395793.html
標籤:javascript 反应 火力基地 谷歌云功能
上一篇:道具被不合理地傳遞
