我正在开发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文档一起检查了如何正确传递附件并按文档所述实施了附件。但是没有成功。
我认为邮件是在读取流完成之前发送的。
这是我使用的软件包版本:
谁能告诉我我做错了什么,或提供一个使用此案例的使用当前软件包版本的有效示例?
这是令我疯狂的代码...
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) 项目设置如下:
两者都是用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)