将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

希望有所帮助!

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...