cdk lambda nodejsfunction pdfmake enoent错误

发布于 2025-02-11 00:49:38 字数 1287 浏览 4 评论 0原文

我正在尝试升级Lambda JS 代码,该代码使用PDFMAKE 0.1.64到CDK lambda nodejsfunction typescript 使用PDFMake 0.2.5的代码。

我正在遇到错误:“ enoent:没有这样的文件或目录,打开'/var/task/data.trie'“

当包含此代码行时,该错误是在lambda函数中生成的:

import PdfPrinter = require('pdfmake');

搜索此错误意味着这是PDFKIT错误。我的理解是PDFMAKE基于PDFKIT。

文档:“在服务器端上使用pdfmake”

import PdfPrinter = require('pdfmake');

const fonts = {
    Courier: {
        normal: 'Courier',
        bold: 'Courier-Bold',
        italics: 'Courier-Oblique',
        bolditalics: 'Courier-BoldOblique'
    },
    Helvetica: {
        normal: 'Helvetica',
        bold: 'Helvetica-Bold',
        italics: 'Helvetica-Oblique',
        bolditalics: 'Helvetica-BoldOblique'
    },
    Times: {
        normal: 'Times-Roman',
        bold: 'Times-Bold',
        italics: 'Times-Italic',
        bolditalics: 'Times-BoldItalic'
    },
    Symbol: {
        normal: 'Symbol'
    },
    ZapfDingbats: {
        normal: 'ZapfDingbats'
    }
};

const docDefinition = {
    content: [
        'First paragraph'
    ],
    defaultStyle: {
        font: 'Helvetica'
    }
};

const printer = new PdfPrinter(fonts);
const doc = printer.createPdfKitDocument(docDefinition);
doc.end();

I'm trying to upgrade Lambda js code that uses pdfmake 0.1.64 to CDK Lambda NodejsFunction typescript code that uses pdfmake 0.2.5.

I'm getting the error: "ENOENT: no such file or directory, open '/var/task/data.trie'"

The error is generated when this line of code is included in the Lambda function:

import PdfPrinter = require('pdfmake');

Searching for this error implies that this is a pdfkit error. My understanding is pdfmake is based on pdfkit.

Docs: "Use pdfmake on server-side" https://pdfmake.github.io/docs/0.1/fonts/standard-14-fonts/

Additional Lambda typescript code (for reference):

import PdfPrinter = require('pdfmake');

const fonts = {
    Courier: {
        normal: 'Courier',
        bold: 'Courier-Bold',
        italics: 'Courier-Oblique',
        bolditalics: 'Courier-BoldOblique'
    },
    Helvetica: {
        normal: 'Helvetica',
        bold: 'Helvetica-Bold',
        italics: 'Helvetica-Oblique',
        bolditalics: 'Helvetica-BoldOblique'
    },
    Times: {
        normal: 'Times-Roman',
        bold: 'Times-Bold',
        italics: 'Times-Italic',
        bolditalics: 'Times-BoldItalic'
    },
    Symbol: {
        normal: 'Symbol'
    },
    ZapfDingbats: {
        normal: 'ZapfDingbats'
    }
};

const docDefinition = {
    content: [
        'First paragraph'
    ],
    defaultStyle: {
        font: 'Helvetica'
    }
};

const printer = new PdfPrinter(fonts);
const doc = printer.createPdfKitDocument(docDefinition);
doc.end();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吐个泡泡 2025-02-18 00:49:38

以下CDK Lambda设置已解决此错误。

new lambdaNJS.NodejsFunction(this, 'MyLambdaFunction', {
    ...
    bundling: {
        ...
        nodeModules: ['pdfmake'], //  List of modules that should NOT be bundled but instead included in the node_modules folder.
    }
});

在lambda中(强制打字稿忽略类型错误)。目前尚不清楚如何使类型工作。 package.json包括 @type/pdfmake软件包。

// @ts-ignore
const doc = printer.createPdfKitDocument(definition, options);

The following CDK Lambda setting fixed this error.

new lambdaNJS.NodejsFunction(this, 'MyLambdaFunction', {
    ...
    bundling: {
        ...
        nodeModules: ['pdfmake'], //  List of modules that should NOT be bundled but instead included in the node_modules folder.
    }
});

In Lambda (force Typescript to ignore the type error). It's not clear how to get types working. The package.json includes @types/pdfmake package.

// @ts-ignore
const doc = printer.createPdfKitDocument(definition, options);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文