gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:47:28 27 4
gpt4 key购买 nike

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

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

"wkhtmltopdf: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory



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

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

最佳答案

我曾经也有过一样的问题。最终从 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的内容与此,或提供您自己的配置 + 字体文件:
<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'

这样做之后,只需像往常一样压缩您的包并进行部署。

希望有帮助

关于node.js - AWS Lambda NodeJS12.x - 加载共享库时出错 : libXrender. so.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59634324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com