呼叫我的 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
以解决此问题。
0 评论