AWS Lambda nodejs 函数抛出异常以使用 html-pdf 生成 html 到 pdf

AWS Lambda nodejs function throwing exception to generate html to pdf using html-pdf

我们创建了 AWS Lambda 函数,使用 html-pdf 库在 nodejs4.3 eun 环境中动态生成 html 到 pdf。

该功能在工作站中运行良好。在 AWS Lambda 中进行测试时出现以下异常。

错误详情:

{ "errorMessage": "spawn /var/task/node_modules/phantomjs-prebuilt/lib/phantom\bin\phantomjs.exe ENOENT", "errorType": "Error", "stackTrace": [ "exports._errnoException (util.js:870:11)", "Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)", "onErrorNT (internal/child_process.js:344:16)", "nextTickCallbackWith2Args (node.js:437:9)", "process._tickDomainCallback (node.js:392:17)" ]

任何人都可以告诉我如何解决这个问题。

出现错误是因为您没有 PhantomJS 二进制文件

/var/task/node_modules/phantomjs-prebuilt/lib/phantom\bin\phantomjs.exe

应该将 HTML 页面保存为 PDF。

但即使您将该二进制文件与 Lambda 函数打包在一起,它仍然无法正常工作:*.exe 扩展名清楚地表明它是 Microsoft Windows 可执行文件。在 AWS Lambda 中,您需要 Linux 到 运行 的版本。

您应该在 *nix 机器上安装“phantomjs-prebuilt”和“html-pdf”包并部署