在Openshift

时间:2015-11-28 05:44:17

标签: linux node.js bcrypt openshift-cartridge

将我的Openshift设备上运行的nodejs版本从v0.10升级到v0.12后,我收到以下错误:

Error: /app-root/runtime/repo/node_modules/bcrypt/build/Release/bcrypt_lib.node: undefined     
symbol: node_module_register    
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at bindings (/app-root/runtime/repo/node_modules/bcrypt/node_modules/bindings/bindings.js:76:44)
    at Object.<anonymous> (/app-root/runtime/repo/node_modules/bcrypt/bcrypt.js:3:35)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

我的package.json中的bcrypt版本设置为~0.8.5

到目前为止,我已经尝试过这些但没有成功:
     - rhc ssh myapp然后更新node-gyprm -rf node_modulesnpm install;
     - 手动安装依赖项;
     - 编辑package.json预安装node-gyp

"scripts":{
    "preinstall": "npm i -g node-gyp && node-gyp clean"
}

任何人都有想法/知道如何解决这个问题? (理想情况下,解决方案不需要升级gcc)

另外,我正在使用Ryan J的custom cartridge for nodejs v.012

1 个答案:

答案 0 :(得分:0)

我终于通过编辑.openshift\lib\utils并在setup_path_for_custom_node_version()函数中添加导出OPENSHIFT_NODEJS_VERSION = 0.6来解决了这个问题:

#  Add the node binary path to the PATH.
export OPENSHIFT_NODEJS_VERSION=0.6
export PATH="$node_bin_path:${PATH}"