bcrypt 破坏了我的 meteor 应用程序,我该如何修复它?

bcrypt is breaking my meteor application, how do I fix it?

我不确定这应该是 Whosebug 还是 serverfault 问题。

我安装了 Meteor 的帐户密码模块,它在本地工作,但在部署到服务器时破坏了我的应用程序。这是独家新闻:

我是 运行 OSX 上本地最新的 Meteor 1.0.5(OS 刚刚完全更新) 使用 --architecture os.linux.x86_64 构建 部署到 Ubuntu 14.04.2 LTS x86_64(刚刚更新) 运行 nodejs v0.12.1(全新构建) 使用 nginx v1.4.0 服务应用

并且仍然得到:

/home/secrethistory/bundle/programs/server/node_modules/fibers/future.js:245
                                            throw(ex);
                                                  ^
Error: Module did not self-register.
    at Error (native)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at bindings (/home/secrethistory/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/node_modules/bindings/bindings.js:74:15)
    at Object.<anonymous> (/home/secrethistory/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/bcrypt.js:3:35)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)

有什么提示或接下来要看的地方吗?

bcrypt 模块依赖于平台(作为纤程),因此您需要在服务器中解压包后删除包:

rm -R path/to/bcrypt

然后重新安装:

npm install bcrypt

从 Meteor 1.0.5 开始(这也适用于即将发布的 1.1),我们还没有对 Node 0.12 进行完整的测试、验证和 QA 过程。我建议在那之前坚持使用 Node 0.10。虽然它很可能大部分都有效,但也可能需要进行一些核心更改,而且如您所见,针对 0.10 ABI 构建的二进制包不适用于 0.12。

从源代码重建 bcrypt 解决了我的问题

npm rebuild bcrypt --build-from-source