为什么 firebase cli 会给出 TypeError

Why do the firebase cli give a TypeError

我已经有一些 运行 没问题的 firebase 云函数,现在我尝试将 SendGrid 功能添加到 https://youtu.be/JVy0JpCOuNI 中描述的其中一个函数中。 firebase CLI 不会 运行 我的代码,因为它说它有一个 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: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory. :warning: functions: Error from emulator. Error occurred while parsing your function triggers.

TypeError: Cannot read property ‘key’ of undefined

错误的是这一行:

const SENDGRID_API_KEY = firebaseConfig.sendgrid.key;

我可以更改什么以避免出现此错误?

您通过 firebase functions:config:get 使用 CLI 设置的变量不会在 process.env.FIREBASE_CONFIG 中结束。他们最终在 functions.config().

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

FIREBASE_CONFIG 仅确定管理 SDK 应如何在不向 admin.initializeApp() 传递参数的情况下进行初始化。

Please read the documentation for more information.