小编Luk*_*ker的帖子

Firebase Cloud Functions-创建pdf,存储到存储桶并通过邮件发送

我正在开发Firebase函数,当向实时数据库中添加新订单时会触发该函数。它要做的第一件事是创建pdf并将其通过管道传输到Google云存储桶。

在存储区流的.on(“ finish”)事件上,下一个函数启动,该函数应通过电子邮件将管道的pdf发送给客户。

一切似乎都正常,至少有一点。

首先,我遇到了一个问题,即所附的pdf始终为空。(不仅是空白。我还用记事本++打开了它,实际上它全是空的)。当我检查bucketFileStream.on(“ finished”)函数内的doc和bucketFileSream变量的长度均为0时。直接在doc.end之后检查doc var的长度为612。

然后,我更改了流程,即在sendOrderEmail函数中,我还从存储桶中新创建的File中打开了一个新的Read Stream。

现在,我至少在附件中得到了一些PDF内容,但是没有获得全部内容。

当我检查上传到存储桶的PDF时,看起来应该是这样。

我在Google上搜索了很多,找到了一些也针对该主题的答案,但是正如对这些问题的评论所看到的那样,它们并没有完全帮助。

我还与nodemailer文档一起检查了如何正确传递附件并按文档所述实施了附件。但是没有成功。

我认为邮件是在读取流完成之前发送的。

这是我使用的软件包版本:

  • “ @ google-cloud / storage”:“ 1.5.2”
  • “ @ types / pdfkit”:“ ^ 0.7.35”,
  • “ firebase-admin”:“ 5.8.0”,
  • “ firebase-functions”:“ ^ 0.7.3”
  • “ nodemailer”:“ 4.4.1”,

谁能告诉我我做错了什么,或提供一个使用此案例的使用当前软件包版本的有效示例?

这是令我疯狂的代码...

const functions = require("firebase-functions");
const admin = require("firebase-admin");
const nodemailer = require("nodemailer");
const pdfkit = require("pdfkit");
const storage = require("@google-cloud/storage")({projectId: `${PROJECT_ID}`})

const mailTransport = nodemailer.createTransport({
  host: "smtp.office365.com",
  port: 587,
  secureConnection: false,
  auth: {
    user: "userName", …
Run Code Online (Sandbox Code Playgroud)

node.js firebase google-cloud-functions

6
推荐指数
2
解决办法
4590
查看次数

Git Hub Actions 使用 maven 对其他存储库的私有包注册表进行身份验证

项目设置如下:

  1. 项目 A(一些 Java 应用程序)
  2. 项目 B(一些 Java 库)

两者都是用maven构建的。项目 B 将其包发布到其自己存储库的 github 包注册表中。项目 A 在 pom.xml 中依赖于项目 B 的工件,如下所示:

<dependency>
   <groupId>com.company</groupId>
   <artifactId>library-project-b</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

项目 A 还包括对项目 B 的包注册表的以下存储库引用:

<repository>
   <id>github-library-project-b</id>
   <name>Project B Github packages repositories</name>
   <url>https://maven.pkg.github.com/organization/library-project-b</url>
   <releases>
      <enabled>true</enabled>
   </releases>
   <snapshots>
      <enabled>true</enabled>
   </snapshots>
</repository>
Run Code Online (Sandbox Code Playgroud)

为了对项目 B 的包注册表进行身份验证,项目 A 还包含一个 settings.xml,其中包含通过环境变量设置的凭据,这些环境变量是通过 Github 操作的机密提供的:

<server>
   <id>github-library-project-b</id>
   <username>${env.USER_PACKAGE_READ}</username>
   <password>${env.TOKEN_PACKAGE_READ}</password>
</server>
Run Code Online (Sandbox Code Playgroud)

在 github actions 中的持续集成工作流程中,我执行以下步骤,将项目 B 的注册表访问存储库中的秘密映射到 settings.xml 中使用的环境变量,并通过 mvn 命令启动构建:

- name: Build Package
  env:
     USER_PACKAGE_READ: ${{ secrets.USER_PACKAGE_READ }}
     TOKEN_PACKAGE_READ: ${{ secrets.TOKEN_PACKAGE_READ …
Run Code Online (Sandbox Code Playgroud)

java github maven github-actions

2
推荐指数
1
解决办法
6114
查看次数