如何修复nodejitsu上部署后的hiredis编译问题?
在我部署到nodejitsu后,我从jistu logs命令收到以下错误。
ld.so.1: node: fatal: relocation error: file /opt/haibu/apps/<user>/<app>/package/node_modules/redis/node_modules/hiredis/build/Release/hiredis.node: symbol redisReaderCreate: referenced symbol not found发布于 2012-08-22 06:26:32
它不能开箱即用的原因是因为redis包与hiredis捆绑在一起,hiredis是redis用来解析redis代码的C库。
Nodejitsu不能保证C库开箱即用,因为代码必须在它们的服务器上编译,也不能保证它会以与您的开发环境相同的方式执行makefile。
在Pavel的解决方案中,他覆盖了CPPFLAGS和LD_OPTIONS环境变量,这反过来会强制hiredis库进行编译。不幸的是,这将对您的包使用的任何其他C库产生不利影响。
我建议通过以下方式将redis与您的项目捆绑在一起:
npm install hiredis
npm install redis
npm uninstall hiredisRedis会检测到你安装了hiredis,所以它不会将其作为依赖项安装。然后,只需在安装redis之后删除hiredis即可。Redis会自动退回到Javascript解析器,这会慢一点(但团队正在努力改进它)。
然后,将"redis“添加到捆绑的依赖项中:
"bundledDependencies": ["redis"]只需简单地使用jitsu deploy,就可以运行了。
发布于 2012-08-22 03:12:58
我不得不将以下内容添加到package.json中
"bundledDependencies": ["redis"]https://npmjs.org/doc/json.html#bundledDependencies
可以选择尝试将以下内容添加到package.json
"env": {
"CXX": "/opt/local/bin/g++ -m64",
"CPPFLAGS": "-I/opt/local/include",
"LD_OPTIONS": "-L/opt/local/lib -lsocket -lnsl",
"PYTHON": "/opt/local/bin/python2.7"
}在webchat.jit.su thx上收到了来自'blakmatrix_‘和'@AvianFlu’的帮助!
npm i -d,它将使用捆绑包dep而不是安装全新的https://stackoverflow.com/questions/12061494
复制相似问题