我正在尝试将自定义buildpack与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库目录。
答案 0 :(得分:0)
您应该设置CPPFLAGS="-I/app/vendor/couchbase/include" LDFLAGS="-L/app/vendor/couchbase/include -lcouchbase"
答案 1 :(得分:0)
看起来您只是在没有任何进一步工作的情况下解压缩libcouchbase。你也应该构建它并安装。 node.js客户端的典型魔法将为./configure --disable-plugins --disable-examples && make && sudo make install
。我不确定heroku是否需要sudo
部分,可能只是make install
答案 2 :(得分:0)
对于任何好奇或遇到类似问题的人来说,这对我有用。
为了安装couchbase npm模块我必须告诉它在哪里找到libcouchbase库(在编译文件中):
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"
然后,为了在我的应用程序中需要 couchbase,我必须设置以下Env变量:
LD_LIBRARY_PATH="/app/vendor/couchbase/lib:$LD_LIBRARY_PATH"
使用命令:
heroku config:add LD_LIBRARY_PATH="/app/vendor/couchbase/lib:$LD_LIBRARY_PATH"