#javascript #node.js #google-cloud-platform #google-cloud-storage #google-iam
#javascript #node.js #google-cloud-platform #google-cloud-storage #google-iam
Вопрос:
При разработке моего приложения в Node.js Поэтому я решил сохранить свои данные, используя клиентские библиотеки облачного хранилища Google.
Я столкнулся с ошибкой, упомянутой в названии, при загрузке в хранилище:
Ошибка: не удалось загрузить учетные данные по умолчанию
Я немного покопался и выяснил, как решить проблему:
-
Переход к учетным данным Google Cloud Console и создание учетной записи службы.
-
Настройка роли для учетной записи службы, чтобы иметь полные права доступа к объектам в моем проекте и моих корзинах
-
Создание ключа для учетной записи службы и загрузка связанного .файл json
-
Установка Cloud SDK и выполнение команд:
gcloud auth application-default login
gcloud config set project [MY_PROJECT_ID]
gcloud auth activate-service-account --key-file=C:/path/to/json/file
-
В моем коде, проходящем в .файл учетных данных json в моем новом экземпляре клиента:
const storage = new Storage({keyFileName: "auth.json"})
Эти описанные шаги устранили проблему… в разработке. Когда я развернул свое приложение для производства, возвращается то же сообщение об ошибке
Я попробовал несколько способов решить проблему. Я предположил, что это проблема с моим веб-хостингом: A2. Поговорив с их технической поддержкой, они заверили меня, что мои пути к файлам указаны правильно в их файловой структуре, но в противном случае они не помогли бы мне устранить ошибку учетных данных.
Итак, почему мои учетные данные отлично работают в разработке, но затем внезапно перестают работать в производстве? Это потому, что у меня был localhost в качестве URI обратного вызова вместо имени домена (или чего-то еще)? Нужно ли указывать домен где-нибудь в SDK или в облачной консоли?
Сообщение об ошибке указывает на https://cloud.google.com/docs/authentication/getting-started , но я много раз читал и перечитывал документацию, поэтому, если кто-нибудь может указать мне на конкретное место в документах, в котором говорится, что мне нужно сделать, это было бы оценено, но имейте в виду, что я сделал свою домашнюю работу, и я RTFM, но япо-прежнему не удается решить эту проблему.
Комментарии:
1. Используете ли вы <имя файла>.js для инициализации своего кода? Если это так, вам следует обновить команду до: GOOGLE_APPLICATION_CREDENTIALS=»/home/user/Downloads/my-key.json» узел <имя файла>.js
2. Итак, да, в моей локальной среде разработки я использую команду
nodemon app.js
, но в моей среде хостинга все, что я делаю, это указываю каталог / имя файла запуска в форме в их пользовательском интерфейсе. Это где мне нужно добавить G_A_CRED? Или вы говорите об обновленииpackage.json
, которое указано в"main": "app.js"
этом?3. Да, первый вариант, который вы упомянули, — это то, что вы должны сделать 🙂