#javascript #node.js #firebase #google-cloud-functions
#javascript #node.js #firebase #google-cloud-функции
Вопрос:
Я пытаюсь сделать 2 запроса на выборку внутри функции, которая выполняется периодически.
exports.scheduledPay = functions.pubsub.schedule('1 of month 07:00').timeZone('America/New_York').onRun((context) => {
//1. fetch for getting token ...
//2. fetch for making Paypal batch request using that token
fetch("https://api.sandbox.paypal.com/v1/payments/payouts", {
method: 'POST',
headers: {"Authorization":"Basic QWJ4aUhTaWM5cmp2NUpQdEV2WUhaMi1hWmVySWFoTHdDVDEza004UURLY3RMWGtXN3lpTFRfVGpFVllVMXB5NFhKcGtxXzdYSVpYRmhkaFc6RVBUbUVZSWg2OE1FVG9FSjEyT0lHdzFKWkFGNTVza2Q2SjNiRmpLYkxMTEJiOTY3akRhQkdRREt1S29yTWN4amZ3Rm00X0VCa1dvUzJkejn="},
body: {"grant_type":"client_credentials"},
redirect: 'follow'
})
.then(response => {return response.text()})
.then(result => {console.log(result);
return null;
})
.catch(error => console.log('error', error));
}
Тем не менее, я продолжаю получать эту ошибку.
ReferenceError: fetch is not defined
at exports.scheduledAward.functions.pubsub.schedule.timeZone.onRun (/workspace/index.js:230:5)
at cloudFunction (/workspace/node_modules/firebase-functions/lib/cloud-functions.js:130:23)
at Promise.resolve.then (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:199:28)
at process._tickCallback (internal/process/next_tick.js:68:7)
Комментарии:
1. Привет, Dinaol, добро пожаловать в SO! Похоже, что в вашем вопросе есть подтекст «вот моя проблема, реши ее за меня», что, к сожалению, не то, для чего нужен SO. Для начала, в теле вопроса даже нет вопроса, только утверждения. Вы пробовали исследовать сообщение об ошибке, которое получаете? Буквально первый результат поиска в Google дает вам то, что вы ищете.
Ответ №1:
Облачные функции выполняются в среде JavaScript nodejs. Это сильно отличается от сред JavaScript браузера. У вас не будет доступа к fetch()
функции, предоставляемой браузерами — это объясняет сообщение об ошибке.
Вместо этого вам нужно будет использовать какой-либо другой тип клиентской библиотеки HTTP, созданной для nodejs. Существует множество популярных вариантов, и я рекомендую выполнить поиск в Интернете, чтобы найти один.