Как получить запрос от API Календаря Google на сайте Hugo в лямбда-функции Netlify - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь сделать запрос на получение Google Calendar API внутри Netlify lambda function для сайта Hugo, но я не могу сделать это без узла, который я не могу использовать.

Я пыталсяиспользуя fetch, XMLHttpRequest, и для этого я попытался использовать zip-it-and-ship -it, но это не работает, и я не могу заставить работать любой модуль узла, поскольку сайт не создан с Node.jsно с Хьюго.

exports.handler = (event, context, callback) => {
    var fetch = require("node-fetch");
    var makeQuerystring = params =>
        Object.keys(params)
        .map(key => {
            return encodeURIComponent(key) + "=" + encodeURIComponent(params[key]);
        })
        .join("&");

    var url = "https://www.googleapis.com/calendar/v3/calendars/calendarid/events";
    var querystring = makeQuerystring({
        q: "Makerspace"
    });
    var today = new Date();

    var yearRn = today.getFullYear();
    var monthRn = today.getMonth()+1;
    var dayRn = today.getDate();
    var hoursRn = today.getHours();
    var minutesRn = today.getMinutes();
    var datetime = new Date(yearRn, monthRn, dayRn, hoursRn, 00,00);
    var indexarray = [];
    fetch(url + "?" + querystring, {
        method: "get",
        headers: {
        Authorization: "Bearer " + {{APIKEY}}
        }
    })

    callback(null, {
        statusCode: 200,
        body: resObj,
      });
  };

Я ожидаю получить объект с кучей событий в нем, с которым я смогу затем работать, чтобы затем перенести его на сайт через обратный вызов.Но на самом деле я не получаю ответ от API, так как запрос никогда не выполняется: «Ошибка: не удается найти модуль« извлечение узла »».Обратный вызов работает так, как я тестировал.

1 Ответ

0 голосов
/ 10 июля 2019

Объедините модули с вашими функциями, если эти зависимости уже не включены в узел.В этом случае вам придется связать node-fetch с вашей функцией.

Для вашего комплекта должен быть существующий модуль.Есть 2 способа сделать это в проекте:

  • Принесите с собой зависимости node_modules из каталога функций или
  • Предварительно соберите свои модули ссборщик (например, webpack) в ваш скрипт и нацеленный на сборку узла

Это может показаться большой работой, но в большинстве случаев это проще, чем кажется.

@ philhawksworth показывает пример в начальном хранилище функции, которая использует первый метод, описанный выше, npm install, используя локальную конфигурацию package.json для node-fetch здесь .Затем результаты сохраняются в хранилище, поэтому Netlify может забрать их при создании функций.Предварительная сборка не требуется.

Второй вариант будет использовать тот же метод, что и в этом хранилище , где ваши функции существуют в исходном местоположении и связаны с местоположением распространения с помощью netlify-lambda cli.

Примечание: Думайте о каждом каталоге функций как о автономном скрипте, который будет работать в своем собственном экземпляре узла без установки каких-либо модулей узла.Функция нуждается во всех зависимостях, установленных в ее каталоге до развертывания.Оба вышеуказанных случая соответствуют этому требованию.

...