将Meteor应用程序从OS X部署到Linux会导致bcrypt问题

我刚刚部署了我的第一个生产Meteor应用程序,但遇到了一个非常重要的问题.当我尝试运行我的应用程序时,出现以下错误
/home/hiapp/bundle/programs/server/node_modules/fibers/future.js:173
                        throw(ex);
                              ^
Error: /home/hiapp/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/build/Release/bcrypt_lib.node: invalid ELF header
    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 (/home/hiapp/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/node_modules/bindings/bindings.js:74:15)
    at Object.<anonymous> (/home/hiapp/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/bcrypt.js:1:97)
    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)

通过一些研究,似乎问题是bcrypt是特定于平台的,并且因为我的开发是在OS X 10.10上,但我的生产服务器在Ubuntu 14.04上,因此存在问题.我的工作是从程序/服务器文件夹运行npm install bcrypt,然后将它从programs / server / node_modules / bcrypt复制到programs / server / npm.这似乎是很多手动步骤.

我正准备重新部署我的应用程序一些修复程序,我担心我将不得不再次执行相同的步骤.有没有更好的方法来部署您不遇到此问题的Meteor应用程序?我的程序目前是:

>运行meteor build
> scp导致tarball到我的服务器(Digital Ocean)
>在我的应用用户主目录中爆炸tarball
>添加步骤:重新编译bcrypt并如上所述复制目录

我猜测自动刷新将在服务器第一次尝试加载它将在火热的荣耀中爆炸的新库时被破坏.简单地在服务器上克隆GIT仓库并直接从那里进行构建会不会更好,或者我可以使用mup或任何其他工具来帮助平滑部署过程吗?

解决方法

我有完全相同的问题 – 我转而使用Meteor Up(MUP)而问题消失了.更不用说它更简单了!

我在youtube上遵循了本教程 – https://www.youtube.com/watch?v=WLGdXtZMmiI,其中包括使用MUP部署到Digital Ocean.

MUP的github页面特别提到它处理二进制NPM模块 – https://github.com/arunoda/meteor-up#binary-npm-module-support

希望有所帮助!

相关文章

文件查找(find) 1 find 简单的说,就是实时查找指定的内容或条件。特点:最新、最快、最准确。 用法:...
非交互式添加分区 方法一 添加/deb/sdb 下的分区,其实位置为1到1000M,第二个分区位置为1001至3000M,...
编译安装httpd 1 去官网下载源码包 为避免非法软件,一定要去官网下载http://www.apache.org httpd-2.4...
gdisk用法 gdisk - InteractiveGUIDpartitiontable (GPT) manipulator GPTfdisk (akagdisk) isatext-mo...
1 一定用快捷键 这里简单的说下几个常用的快捷按键。 1.1 移动光标快捷键 Crtl + a 光标回到命令行...
bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径。如果test命令中列出的条件成立...