Почему FireBase Cli дает TypeError - PullRequest
0 голосов
/ 03 января 2019

У меня уже есть некоторые облачные функции Firebase, которые работают нормально, и теперь я пытаюсь добавить функциональность SendGrid к одной из функций, как описано в https://youtu.be/JVy0JpCOuNI. CLI Firebase не будет запускать мой код, потому что он говорит, что имеетa TypeError

Код написан на Typescript, и транспортер не выдает никакой ошибки.Я использую последние версии CLI и SDK.

admin.initializeApp();

const firebaseConfig = JSON.parse(process.env.FIREBASE_CONFIG);
const SENDGRID_API_KEY = firebaseConfig.sendgrid.key;

const sgMail = require(‘@sendgrid/mail’);
sgMail.setApiKey(SENDGRID_API_KEY);

Я проверил, что в конфигурации firebase содержится ключ sendgrid:

$ firebase functions:config:get
{
    "sendgrid": {
      "key": "MY_SEND_GRID_KEY"
    }
} 

Я получаю этот вывод при попыткедля развертывания --only functions:

functions: не удалось загрузить исходный код функции.Убедитесь, что у вас последний SDK, запустив npm i --save firebase-functions в каталоге functions.: предупреждение: функции: ошибка эмулятора.Произошла ошибка при разборе триггеров вашей функции.

TypeError: Невозможно прочитать свойство 'key' из неопределенного

Именно в этой строке выдается ошибка:

const SENDGRID_API_KEY = firebaseConfig.sendgrid.key;

Что я могу изменить, чтобы я не получил эту ошибку?

1 Ответ

0 голосов
/ 03 января 2019

Переменные, которые вы устанавливаете с помощью CLI через firebase functions:config:get, не заканчиваются на process.env.FIREBASE_CONFIG. Они заканчиваются в functions.config().

import * as functions from 'firebase-functions'
const key = functions.config().sendgrid.key

FIREBASE_CONFIG просто определяет способ инициализации SDK администратора без параметров, передаваемых admin.initializeApp ().

Пожалуйста, прочитайте документацию для получения дополнительной информации.

...