AWS Lambda NodeJS12.x - 加载共享库时出错:libXrender.so.1



我已经将lambda函数从nodejs8更新到nodejs12。

wkhtmltopdf 在 nodejs 8 上运行良好,但现在我收到此错误:

"wkhtmltopdf:加载共享库时出错:libXrender.so.1:无法打开共享对象文件:没有这样的文件或目录

我试图手动将库 libXrender 放入文件项目中,但它不起作用。

如果有人有关于如何在nodejs 12中的aws lambda上使wkhtmltopdf工作的解决方案,那就太好了。提前谢谢你。

我遇到了同样的问题。最终从Amazon Linux 2映像中提取了必要的库+字体,如下所示:

1( 运行并进入适用于 Amazon Linux 2 的 docker 容器:

docker run -it --rm amazonlinux:2.0.20191217.0

2( 在 docker 容器内安装必要的工具,并自动准备必要的依赖项(基于 64 位(:

mkdir -p /deps
yum install -y yum-utils rpmdevtools
yum install -y libXrender.x86_64 fontconfig.x86_64 freetype.x86_64 libXext.x86_64 libX11.x86_64 expat.x86_64 libxcb.x86_64 libXau.x86_64
yumdownloader libXrender.x86_64 fontconfig.x86_64 freetype.x86_64 libXext.x86_64 libX11.x86_64 expat.x86_64 libxcb.x86_64 libXau.x86_64
rpmdev-extract *rpm
cp /tmp/*/usr/lib64/* /deps
cp -R /tmp/*/etc/fonts /deps/

3( 打开一个新的术语窗口并导航到 PDF lambda 文件夹。使用docker ps命令,找到容器 ID 并粘贴以下命令:

docker cp <CONTAINER_ID>:/deps/ . && mv deps/* . && rmdir deps

4(将<your_lambda_path>/deps/fonts/fonts.conf的内容替换为此,或者提供自己的config+字体文件:

<fontconfig>
<dir>/var/task/fonts/</dir>
<cachedir>/tmp/fonts-cache/</cachedir>
<config></config>
</fontconfig>

5( 在处理程序中,您需要设置以下内容以查找字体:

process.env['FONTCONFIG_PATH'] = process.env['LAMBDA_TASK_ROOT'] + '/fonts'

完成此操作后,只需压缩包并像往常一样进行部署。

希望有帮助

检查下面的存储库,以便在 Lambda 下使用 wkhtmltopdf

https://github.com/lubos/aws-lambda-wkhtmltopdf

https://github.com/dimiro1/lambda-wkhtmltopdf

https://github.com/jpaolin/aws-lambda-s3-wkhtmltopdf

最新更新