메시지 페이지가있는 반응 앱이 있습니다. 메시지 페이지에서는 사용자가 메시지를 제출할 수 있습니다. 제출 프로세스는 Firebase 함수 (Google Cloud)에 배포 된 Cloud 함수에 메시지 정보를 보냅니다. 이 함수는 다음과 같은 객체로 응답합니다.
{
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.''
Cloud Function에 로그인 할 때 발생하는 오류는 다음과 같습니다.
ReferenceError: data is not defined
at exports.testSendMessage.functions.https.onCall
... 이것은 함수가 axios가 응답으로 해결 될 때까지 기다리지 않고 (나중에 수행하더라도) 대신 함수를 계속 진행하여 오류가 발생 함을 의미합니다.
무슨 일이야?
ReferenceError: data is not defined
그것이 outcome.data
정의되지 않았다는 것을 말하고 있습니다 . outcome
예상과 다른 이유를 확인하려면 더 많은 로깅을 수행해야합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다