为什么我的 Firebase/Postmark 电子邮件发送功能无法部署?

Why does my Firebase/Postmark email despatch function fail to deploy?

提问人:MartinJ 提问时间:11/25/2022 最后编辑:Frank van PuffelenMartinJ 更新时间:11/29/2022 访问量:67

问:

我的函数的 Firebase 部署失败,并显示以下错误:

“函数在加载用户代码时失败。这可能是由于用户代码中的错误。

函数代码如下:

const postmark = require("postmark");

const functions = require("firebase-functions");
const admin = require("firebase-admin");

admin.initializeApp()

exports.sendPostmarkEmailFunction = functions.firestore.
    document('/postmarklogs/{documentId}').
    onCreate((snapShot, context) => {

        var serverToken = "_my_client_key_";
        var client = new postmark.ServerClient(serverToken);

        try {
            client.sendEmail({
                "From": "_my_depatch_address_",
                "To": "_my_receipt_address_",
                "Subject": snapShot.data().subject,
                "HtmlBody": snapShot.data().message
            });
            return true;
        } catch (error) {
            console.log("Error : " + error.ErrorCode + " : " + error.Message);
            return false;
        }

    });

此代码在 Firebase 模拟器中运行良好。据我所知,部署问题是由线路专门触发的。如果我注释掉这一点,该函数就会部署 - 但当然它不起作用!const postmark = require("postmark");

建议将不胜感激。

node.js firebase google-cloud-functions 邮戳

评论


答:

0赞 MartinJ 11/28/2022 #1

邮戳需要安装在项目的“functions”文件夹中。我已将其安装到项目的正文中,因此指导部署构建阶段的“functions/package.json”文件中缺少 Postmark。创建的“functions”文件夹就像项目中的项目,需要这样对待。firebase init functions

我从部署“构建”日志中发现了问题 在“functions”文件夹中安装Postmark后,我的sendPostmarkEmailFunction函数可以完美地工作。

顺便说一句,除非你已经知道这一点,否则 Postmark API 令牌确实需要安全地保存在 Firebase 环境变量存储中。此外,虽然您可能很想使用 https.onRequest 触发器而不是此处使用的 onCreate(),但您可能想知道,当与 Postmark 一起使用时,这可能会让您陷入无休止的 CORS 问题。