我的函数的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");行具体触发的。如果我注释掉这一点,这个函数就会部署--但是它当然不能工作!
如能提出建议,将不胜感激。
发布于 2022-11-28 13:39:13
邮戳需要安装在项目的“功能”文件夹中。我已经将它安装到项目的主体中,因此,指导部署构建阶段的“functions/Package.json”文件中缺少了Postmark。firebase init functions创建的“函数”文件夹就像项目中的一个项目,需要这样处理。
一旦我的sendPostmarkEmailFunction函数安装到'functions‘文件夹中,我就发现了部署"build“日志中的问题。
顺便说一下,除非您已经知道这一点,否则邮戳API令牌确实需要安全地保存在Firebase environment variable商店中。此外,虽然您可能会尝试使用https.onRequest触发器而不是这里使用的onCreate(),但是您可能希望知道,当与Postmark一起使用时,这可能会使您陷入无休止的CORS问题。
https://stackoverflow.com/questions/74564834
复制相似问题