我有一个firebase项目,在这个项目中我编写了要部署到Google Node Cloud函数中的typescript函数。当我运行firebase deploy --only functions
命令时,它将我的代码转换成javascript,并将js输出放到src
文件夹旁边的一个名为lib
的文件夹中,我的typescript函数存放在这个文件夹中。然而,我的一些函数需要访问本地文件,如.ttf文件或其他文件类型。这些文件没有被复制到lib文件夹,因此,我在运行时Error: ENOENT: no such file or directory, open path/to/file
中得到错误
问题一:如何使用deploy命令将资产文件复制到输出文件夹?
问题二:假设我的所有函数都位于单独的文件夹中,我的资产也是如此,我应该如何引用我的资产才能找到它们?我应该给出相对于lib
文件夹还是相对于函数所在位置的资产文件路径?
编辑-1
请在此处查看项目结构:需要字体的代码位于some-function.ts文件中。它使用需要字体才能工作的pdfmake库。下面是我在some-function.ts文件中的操作方法:
const fonts: TFontDictionary = {
Poppins: {
normal: './fonts/Poppins/Poppins-Regular.ttf',
bold: './fonts/Poppins/Poppins-Bold.ttf',
italics: './fonts/Poppins/Poppins-Medium.ttf',
bolditalics: './fonts/Poppins/Poppins-Thin.ttf',
}
};
const pdfmake = require('pdfmake');
const printer = new pdfmake(fonts);
那么,如果我将这些字体放在根目录或src目录下的一个单独文件夹中,我如何引用这些字体呢?
1条答案
按热度按时间hm2xizp91#
经过一番挖掘,我得出了一个解决方案,我想在这里分享。
1-首先,按照@Dharmaraj的建议,我添加了一个脚本,在构建项目之前删除lib文件夹,并在部署之前复制我的资产文件。
实际上,添加remove lib命令解决了我在部署函数时遇到的另一个问题。我认为这应该是默认行为,因为当你重命名函数文件时,旧的文件会粘在lib文件夹中,导致各种问题。
无论如何,现在为了正确引用您的资源,只要将路径构造为
${__dirname}/fonts/some-font.ttf
,前提是字体文件夹与您正在编辑的文件位于同一个文件夹中。