【问题标题】:Elastic Beanstalk and ES6弹性豆茎和 ES6
【发布时间】:2016-01-04 01:31:43
【问题描述】:

我正在尝试在 Elastic Beanstalk 上部署我的节点服务器,但它不起作用,因为 Elastic Beanstalk 开箱即用支持的最新版本是 0.12.6(2015 年 7 月)。使用 io.js 或最新的节点版本 (4.1.2) 都是可行的选择,但目前尚不清楚如何让 beanstalk 启动 ec2 实例来执行此操作。

我尝试了很多东西,包括:

  1. 将 4.1.2 源添加到我的 .ebextensions 配置文件中,然后更新 /tmp/deployment/config/#etc#init#nodejs.conf 中的引用,但 console.log(process.argv) 仍然是 0.12.6。更重要的是,我第二次运行这个我得到一些text file busy 错误大概是因为它试图在节点仍在运行时更改节点包的源......(参见https://forums.aws.amazon.com/thread.jspa?threadID=169385
  2. 添加一个文件,下载 4.1.2 源并对其进行解压缩并更新参考,如 https://github.com/kopurando/better-faster-elastic-beanstalk 中一样,但这似乎也不起作用(版本仍然是 0.12.6)

为什么只运行最新的稳定版本的 node 以及在 AWS 上被广泛支持 4 个月的东西这么难?

【问题讨论】:

    标签: javascript amazon-elastic-beanstalk


    【解决方案1】:

    一种选择是创建一个自定义 AMI(亚马逊系统映像)并使用它来部署您的应用程序:

    http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customenv.html

    他们的文档中有很多步骤,但简单来说,您需要:

    1. 启动服务器
    2. 根据需要自定义安装
    3. 创建图像
    4. 使用新创建的 AMI 创建弹性 beanstalk 环境

    如果你想运行带有 ES2015 特性的节点,另一个选择是使用babel cli

    您需要将start 任务添加到您的package.json

    {
      "scripts": {
        "start": "babel-node index.js",
      },
      "dependencies": {
        "babel": "^5.8.23",
      }
    }
    

    不过……

    不适合生产使用

    您不应该在生产环境中使用 babel-node。它不必要地繁重,由于缓存存储在内存中,内存使用率很高。由于需要动态编译整个应用程序,因此您也总是会遇到启动性能损失。

    【讨论】:

      【解决方案2】:

      除了使用node v4,你可以使用babel将es6代码编译为es5代码,并将es5代码部署到beantalk。

      假设您所有的源代码都在lib 目录中,并带有启动服务器的index.js 文件。

      lib/
          index.js
          other
      

      然后你可以使用babel lib -d dist编译lib目录下的es6文件,并在dist目录下创建es5版本的文件。

      dist/
          index.js
          other
      

      然后你可以只node dist/index.js 来运行你的服务器,只需要为 beanstalk 更改 package.json 如下,因为 beanstalk 使用 npm start 来运行你的服务器

      "scripts": {
        "start": "node dist/index.js"
      }
      

      我喜欢在 es6 中使用 babel,因为它对新功能的覆盖面更广。 您可以找到更多信息

      node.js 服务器示例:https://github.com/babel/example-node-server

      babel 主页:https://babeljs.io/

      【讨论】:

        猜你喜欢
        • 2015-03-20
        • 2016-09-08
        • 2016-03-21
        • 2018-02-25
        • 2019-11-06
        • 2018-03-23
        • 2016-01-13
        • 2015-04-02
        • 2017-09-01
        相关资源
        最近更新 更多