You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda Node.js函数缺失whereis命令的解决方案咨询

问题解答:AWS Lambda Node.js环境下的whereis命令与字体列表获取方案

核心结论

AWS Lambda的Node.js运行时环境默认不包含whereis命令,也未预装fc-list这类字体查询工具,因此直接依赖font-list库的getFonts()方法会触发报错。以下是具体修复与替代方案:

方案一:通过自定义Lambda层补充所需工具

  • 构建包含whereis和fc-list的自定义Lambda层:
    1. 在与Lambda兼容的Linux环境(如Amazon Linux 2)中,安装findutils(提供whereis)和fontconfig(提供fc-list)
    2. 将安装后的二进制文件按Lambda层要求的目录结构(如bin/目录下存放二进制文件)打包为zip
    3. 在AWS控制台创建Lambda层并上传该zip包
    4. 将该层附加到你的Node.js Lambda函数,之后函数即可调用whereis和fc-list,font-list库也能正常运行

方案二:绕过第三方库,手动定义Lambda可用字体

Lambda默认环境预装的字体数量有限,可直接手动列出这些字体,无需调用外部命令:

  • Lambda默认包含的常见字体:Arial、Courier、Helvetica、Times New Roman、Verdana等
  • 修改代码直接返回预定义字体列表:
static async get(body, res) {
    // 手动定义Lambda环境可用字体
    const predefinedFonts = [
        { family: 'Arial', path: '/usr/share/fonts/arial.ttf' },
        { family: 'Courier', path: '/usr/share/fonts/courier.ttf' },
        { family: 'Times New Roman', path: '/usr/share/fonts/times.ttf' }
        // 可根据实际环境补充更多字体信息
    ];
    res['body']['fonts'] = predefinedFonts;
};

方案三:打包自定义字体到Lambda部署包

如果需要更多自定义字体:

  • 将所需字体文件(如.ttf格式)添加到项目目录
  • 部署Lambda时将字体文件一同打包进部署包
  • 代码中直接读取本地字体文件的信息,无需依赖fc-list工具

内容的提问来源于stack exchange,提问作者Jesse Finnegan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:53:26