Mac Big Sur环境下Gatsby项目执行npm install时sharp依赖报错:Package OpenEXR was not found in the pkg-config search path的解决求助
我之前在Mac Big Sur 11.x版本上也碰到过一模一样的问题,折腾了一阵终于解决了,给你分享下可行的方案:
问题根源
从你的错误日志里能抓到关键线索:
npm ERR! Package OpenEXR was not found in the pkg-config search path.
npm ERR! Perhaps you should add the directory containing `OpenEXR.pc'
npm ERR! to the PKG_CONFIG_PATH environment variable
这说明系统的PKG_CONFIG_PATH环境变量没有包含Homebrew安装的OpenEXR的pkg-config配置文件目录,导致node-gyp编译sharp的时候找不到这个依赖,所以才会失败。你之前重装vips没用,是因为vips本身依赖OpenEXR,但OpenEXR的配置路径没被系统识别到。
具体解决步骤
1. 先找到OpenEXR的pkg-config路径
在终端里执行这条命令,定位OpenEXR的配置文件位置:
brew list openexr | grep .pc
正常情况下会输出类似 /usr/local/Cellar/openexr/2.5.5/lib/pkgconfig/OpenEXR.pc 的路径,我们需要的是这个文件所在的目录,也就是 /usr/local/Cellar/openexr/2.5.5/lib/pkgconfig/(注意替换成你自己的版本号)。
2. 临时设置环境变量并重新安装
在当前终端窗口执行以下命令,把OpenEXR的配置目录加入到PKG_CONFIG_PATH,然后清理缓存重新安装:
# 替换成你刚才找到的OpenEXR的pkg-config目录 export PKG_CONFIG_PATH="/usr/local/Cellar/openexr/2.5.5/lib/pkgconfig/:$PKG_CONFIG_PATH" # 清理之前的sharp残留和锁文件 rm -rf node_modules/sharp rm package-lock.json # 重新安装依赖 npm install
3. 永久设置环境变量(可选)
如果不想每次安装都手动设置环境变量,可以把这个配置加到你的shell配置文件里:
- 如果你用的是bash,编辑
~/.bash_profile或者~/.bashrc - 如果你用的是zsh(Mac默认shell),编辑
~/.zshrc
在文件末尾添加一行:
export PKG_CONFIG_PATH="/usr/local/Cellar/openexr/2.5.5/lib/pkgconfig/:$PKG_CONFIG_PATH"
替换成你实际的路径,然后执行 source ~/.zshrc(对应你的shell)让配置立即生效。
4. 备选方案:强制使用预编译二进制包
如果上面的方法还是不行,可以强制sharp跳过源码编译,直接用官方预编译的二进制包,执行:
export SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install
或者直接指定安装sharp时忽略全局libvips:
npm install sharp --ignore-scripts=false --verbose
内容的提问来源于stack exchange,提问作者KTT

