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

Heroku安装sharp时node-gyp构建找不到libvips-cpp.so问题排查

问题根源

你遇到的报错是Heroku构建阶段和运行阶段的路径差异导致的:

  • Heroku构建应用时,所有文件都放在临时构建目录(就是你日志里的/tmp/build_1f4c5c03),构建完成后才会把目录内容移动到运行时的/app路径下
  • 你用的vips buildpack在构建阶段把libvips放到了/tmp/build_xxxx/vendor/vips路径下,但sharp的binding.gyp里的检测逻辑直接写死了去/app/vendor/vips下找libvips-cpp.so,构建阶段这个路径还不存在,所以会报错
  • 你后续用heroku run bash能找到文件是因为你已经完成了构建,文件已经被移动到/app路径下了,属于运行时的环境,和构建时环境不一样

解决方案

你可以选下面任意一种方法处理:

方法1:配置sharp使用正确的构建路径

在你的Heroku应用环境变量里添加两个变量:

  • SHARP_IGNORE_GLOBAL_LIBVIPS 设为 false
  • PKG_CONFIG_PATH 补充构建阶段的vips pkgconfig路径,值为/tmp/build_*/vendor/vips/lib/pkgconfig

方法2:更换适配构建路径的vips buildpack

换用已适配Heroku构建路径的vips buildpack,这类buildpack会在构建阶段就把libvips的路径同时写入构建时和运行时的环境变量,sharp检测时可以直接通过pkg-config拿到正确的临时构建路径,不会硬找/app目录

方法3:手动指定libvips路径

在package.json里添加preinstall钩子,安装sharp前手动导出对应路径:

{
  "scripts": {
    "preinstall": "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/vendor/vips/lib PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$(pwd)/vendor/vips/lib/pkgconfig"
  }
}

内容的提问来源于stack exchange,提问作者Nicolas Ngô-Maï

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:36:04