首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复nodejitsu上的hiredis编译问题?

如何修复nodejitsu上的hiredis编译问题?
EN

Stack Overflow用户
提问于 2012-08-22 03:12:58
回答 2查看 937关注 0票数 3

如何修复nodejitsu上部署后的hiredis编译问题?

在我部署到nodejitsu后,我从jistu logs命令收到以下错误。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-22 06:26:32

它不能开箱即用的原因是因为redis包与hiredis捆绑在一起,hiredis是redis用来解析redis代码的C库。

Nodejitsu不能保证C库开箱即用,因为代码必须在它们的服务器上编译,也不能保证它会以与您的开发环境相同的方式执行makefile。

在Pavel的解决方案中,他覆盖了CPPFLAGS和LD_OPTIONS环境变量,这反过来会强制hiredis库进行编译。不幸的是,这将对您的包使用的任何其他C库产生不利影响。

我建议通过以下方式将redis与您的项目捆绑在一起:

代码语言:javascript
复制
npm install hiredis
npm install redis
npm uninstall hiredis

Redis会检测到你安装了hiredis,所以它不会将其作为依赖项安装。然后,只需在安装redis之后删除hiredis即可。Redis会自动退回到Javascript解析器,这会慢一点(但团队正在努力改进它)。

然后,将"redis“添加到捆绑的依赖项中:

代码语言:javascript
复制
"bundledDependencies": ["redis"]

只需简单地使用jitsu deploy,就可以运行了。

票数 4
EN

Stack Overflow用户

发布于 2012-08-22 03:12:58

我不得不将以下内容添加到package.json中

代码语言:javascript
复制
"bundledDependencies": ["redis"]

https://npmjs.org/doc/json.html#bundledDependencies

可以选择尝试将以下内容添加到package.json

代码语言:javascript
复制
"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’的帮助!

  • bundleddeps告诉npm将dep与项目的其余部分打包在一起,通常情况下,node_modules中的任何内容都不会打包
  • ,但如果您告诉它,通过将dep名称放入捆绑的dep数组中,它会在打包
  • 时将该依赖项包含在您的应用程序中执行此操作一旦您执行npm i -d,它将使用捆绑包dep而不是安装全新的
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12061494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档