эмулятор облачных функций не может читать или записывать в базу данных firestore - PullRequest
2 голосов
/ 14 июня 2019

Я вчера запускал свои облачные функции с эмулятором без проблем. Когда я вернулся и установил export GOOGLE_APPLICATION_CREDENTIALS= после перезагрузки, теперь я не могу читать или писать в базу данных. Я удалил свой ключ, создал новый и все еще сталкиваюсь с той же проблемой. Я создал простую функцию, которая работает без ошибок, но она не читает и не записывает в базу данных при запуске в эмуляторе. Функция .get() сообщает, что ничего не может найти, а .set() ничего не возвращает и не записывает в БД.

Редактировать * мои функции запускаются при развертывании в firebase, но у меня есть одна, которая анализирует и загружает огромные объемы данных, которые истекают из-за того, что мне приходится работать локально из-за того, сколько времени это занимает.

exports.dumbFunction = functions.https.onRequest((request, response) => {
  admin
    .firestore()
    .collection("test")
    .doc("hello")
    .get()
    .then(function(doc) {
      if (doc.exists) {
        console.log("You got me" + doc.data());
      } else {
        console.log("I couldn't find anything");
      }
    });
  admin
    .firestore()
    .collection("test")
    .doc("test123")
    .set({
      setme: "ok",
      asdf: "asdf"
    })
    .catch(err => {
      console.log("did I error?");
      console.log(err);
    });
  console.log("hi again");

});

Я следовал инструкциям следующего.

https://cloud.google.com/docs/authentication/getting-started

https://firebase.google.com/docs/functions/local-emulator

https://cloud.google.com/storage/docs/reference/libraries

когда я запускаю пример node.js в третьей ссылке, я получаю следующие сообщения об ошибках, которые, по моему мнению, являются моей проблемой, но я понятия не имею, почему или как это исправить.

Unknown network resource requested!
   - URL: "http://metadata.google.internal./computeMetadata/v1/instance"
  ERROR: Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
     at GoogleAuth.<anonymous> (/home/ben/Development/polity/functions/node_modules/google-auth-library/build/src/auth/googleauth.js:168:23)
     at Generator.next (<anonymous>)
     at fulfilled (/home/ben/Development/polity/functions/node_modules/google-auth-library/build/src/auth/googleauth.js:19:58)
     at processTicksAndRejections (internal/process/task_queues.js:89:5)

когда я echo $GOOGLE_APPLICATION_CREDENTIALS показывает, что он настроен на мой JSON-файл, содержащий мой ключ.

* * * * * * * * * * * * Unknown network resource requested! - это то, что я теперь вижу и в других своих функциях, что я не получил, когда они работали.

Есть идеи?

Большое спасибо

1 Ответ

0 голосов
/ 14 июня 2019

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

https://github.com/GoogleCloudPlatform/functions-framework-nodejs

...