[英]Axios async await Cloud Function returning before axios completes post request
我有一個帶有消息頁面的 React 應用程序。 消息頁面允許用戶提交消息。 提交過程將消息信息發送到部署在 Firebase Functions (Google Cloud) 上的 Cloud Function。 該函數以這樣的對象響應:
{
success: true,
message: 'Your message has been sent.'
}
這是雲函數:
const functions = require('firebase-functions') const admin = require('firebase-admin') admin.initializeApp() const fs = admin.firestore() const axios = require('axios') exports.sendMessage = functions.https.onCall(async (input) => { try { let outcome = await axios({ method: 'post', url: 'https://recaptcha.google.com/recaptcha/api/siteverify', params: { secret: --redacted--, response: input.recaptchaToken } }) outcome.data.success && fs.collection("messages").add({ timestamp: admin.firestore.FieldValue.serverTimestamp(), name: input.name, email: input.email, message: input.message }) return outcome.data.success ? { success: true, message: 'Your message has been sent.' } : { success: false, message: `Your message failed. You're a robot.` } } catch (error) { console.error('Cloud Function error:', error) return { success: false, message: 'Your message failed. Try again later.' } } })
但是,它沒有按預期工作。 消息成功寫入 Firestore,但是我收到的對象是success: false, message: 'Your message failed. Try again later.''
success: false, message: 'Your message failed. Try again later.''
我從登錄 Cloud Function 得到的錯誤是這樣的:
ReferenceError: data is not defined
at exports.testSendMessage.functions.https.onCall
...這意味着該函數不會等待 axios 解析響應(即使它稍后會這樣做),而是繼續執行該函數,從而導致錯誤。
到底是怎么回事?
ReferenceError: data is not defined
告訴你outcome.data
是未定義的。 你應該做更多的日志來確定為什么outcome
不是你期望的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.