【问题标题】:Meteor 0.9.0 bundle and deploy throw errorsMeteor 0.9.0 捆绑和部署抛出错误
【发布时间】:2014-08-27 10:33:29
【问题描述】:

我今天升级到 Meteor 0.9.0。我使用 meteor bundle filename 来捆绑我的应用程序并上传到 AWS。当我尝试在 AWS 上启动它时,我得到了

wrong ELF class: ELFCLASS32

这是fiber/bcrypt 的一个已知问题,所以我过去常常去bundle/programs/server/node_modules,删除fiber 和bcrypt 文件夹并重新安装它们(npm install)。

但是,当前 node_modules 目录不再存在...当我尝试启动 nodejs 时,我得到了

Error: Cannot find module 'underscore'

我尝试使用npm install手动添加模块,甚至让服务器最终运行,但是客户端没有加载并且控制台错误是关于

Spacebars undefined

(我没有确切的空格键问题)

我知道 Meteor 0.9.0 非常新,但如果您有建议,我将不胜感激!

【问题讨论】:

    标签: node.js meteor


    【解决方案1】:

    您不需要删除任何文件夹,只需在bundle 目录中执行此操作(未解压的meteor bundle 的输出):

    cd bundle
    cd programs/server
    npm install
    

    Meteor 0.9.0 确保它放置所有不包含二进制文件的 node_modules,并为 bcrypt 和 fiber 的 npm install 创建一个 package.json

    由于您已删除 node_modules 中的 npm 模块,您可能必须从头开始重新创建捆绑包以将它们取回。

    对于Spacebars undefined 问题,很可能您的项目中有一个与 Meteor 0.9.0 不兼容的包。您可以通过检查服务器日志找出它是哪一个。虽然不兼容,但您的应用仍然可以运行。

    这可能是 boostrap-3,尽管它可能不是。如果是,您可以meteor remove mrt:bootstrap-3meteor add mizzao:bootstrap-3

    【讨论】:

      【解决方案2】:

      Akshat,你是救生员!根据您的回答,我最终设法弄清楚了!为了他人的利益,我想记录下最终奏效的方法:

      首先,我必须从 Meteor 项目中手动删除所有旧包(似乎它没有自动完成)。特别是,我删除了

      iron-router 
      

      这是 Meteor 0.9 之前的版本并已安装

      iron:router 
      

      这是 Meteor 0.9 之后的版本。 (我也必须为 2-3 个其他包执行类似的删除和添加不同包的过程。

      然后,一旦我在 AWS 上打包和解包,我就按照 Akshat 所说的在 bundle/programs/server 中安装 npm 进行操作。另外,我不得不通过删除文件夹来手动删除原来的 bctypt

      bundle/programs/server/npm/npm-bcrypt
      

      否则我会遇到 ELS 错误

      【讨论】:

        【解决方案3】:

        如果您在使用 Meteor-Up 时遇到此错误。更新软件包应该可以解决它。

        npm update mup -g
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-22
          • 2013-02-03
          • 1970-01-01
          • 2012-03-07
          • 2016-07-28
          • 1970-01-01
          • 2020-09-02
          • 1970-01-01
          相关资源
          最近更新 更多