Я пытаюсь создать облачную функцию Firebase, которая выполняет поиск по API Google Книг.
export const searchBooksOnline = functions.https.onCall(
async function(data: any, context: functions.https.CallableContext) {
const query: string = data.query;
console.log(`Received query loud and clear: ${query}`);
try {
const res = await fetch(`https://www.googleapis.com/books/v1/volumes?q=${query}&key=MY-API-KEY`);
const json = await res.json();
return json;
} catch(err) {
throw new functions.https.HttpsError(err.status, 'Failed to search books online');
}
}
);
Но всякий раз, когда я вызываю эту функцию из Javascript API, я получаю сообщение об ошибке:
Unhandled error Error: Unknown error code: undefined.
at new HttpsError (/srv/node_modules/firebase-functions/lib/providers/https.js:95:19)
at exports.searchBooksOnline (/srv/lib/books.js:42:15)
at func (/srv/node_modules/firebase-functions/lib/providers/https.js:267:32)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:229:7)
, что довольно криптично c для меня. Я знаю, что функция вызывается правильно, потому что
Я вижу свою распечатку в журнале облачных функций "Получен запрос громко и ясно:".
Когда я удаляю строку await fetch
и возвращаю некоторые фиктивные данные, функция выполняется правильно.
Кроме того, я уверен, что вызов API работает, потому что когда я копирую эти несколько строк для запуска непосредственно из консоли разработчика моего браузера, я получаю ожидаемый ответ API.
Я не уверен, что отличается от среды Cloud Functions, которая вызывая эту ошибку. (Я нахожусь в плане Blaze, который должен позволять мне делать запросы к внешним сайтам)
Надеюсь, что кто-то может помочь пролить некоторый свет на это!
(я видел эта похожая проблема , но решение, примененное OP, не имеет значения для меня, у меня все еще та же ошибка.)