我正在尝试将自定义构建包与 NodeJS 和 CouchBase 模块/库放在一起
我已经使用 Vulcan 构建 libcouchbase 和 libvbucket 并让 buildpack 检索和解压缩两者的 tgz 文件。
那里一切看起来都很好,但是当 npm 尝试安装 couchbase 模块时我收到错误:
我得到了一堆错误,但是这一行:
“../src/couchbase_impl.h:52:36:警告:libcouchbase/couchbase.h:没有这样的文件或目录”
让我认为它找不到 libcouchbase 库(这是可能的,因为它们不在通常的位置)。
我尝试在 Config Vars 中使用 CPPFLAGS="-I/app/vendor/couchbase/include/libcouchbase" 添加正确的路径,并将其作为编译阶段的一部分导出,但仍然没有运气。
这是 Heroku 部署输出和编译/发布 buildpack 文件的要点: https ://gist.github.com/ahamidi/5620503
任何帮助将不胜感激。
谢谢,
阿里
[更新 1]
我已经取得了一些进展,现在我可以在部署到 Heroku 时编译 slug。
关键是找出 CouchNode 在添加要包含的自定义目录时查找的 ENV 变量。
在这种情况下,Env 变量是 EXTRA_CPPFLAGS 和 EXTRA_LDFLAGS。
所以我更新了编译文件以包含以下内容:
export EXTRA_CPPFLAGS="-I$BUILD_DIR/vendor/couchbase/include"
export EXTRA_LDFLAGS="-L$BUILD_DIR/vendor/couchbase/lib -Wl,-rpath,$BUILD_DIR/vendor/couchbase/lib"
slug 编译并部署了应用程序,但我现在在日志中得到一个不同的错误:
Error: libcouchbase.so.2: cannot open shared object file: No such file or directory
所以看起来 Node 看不到 libcouchbase 库目录。