弹性豆茎和ES6

Elastic Beanstalk and ES6

本文关键字:ES6      更新时间:2023-09-26

我试图在Elastic Beanstalk上部署我的节点服务器,但它不会工作,因为最新版本的Elastic Beanstalk支持开箱即用的0.12.6(2015年7月)。使用io.js或最新的节点版本(4.1.2)都是可行的选择,但不清楚如何让beanstalk启动ec2实例来做到这一点。

我试过很多方法,包括:

  1. 将4.1.2源代码添加到我的. ebeextensions配置文件中,然后更新/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个月的东西就这么难?

您可以使用babel将es6代码编译为es5代码,并将es5代码部署到beanstalk上,而不是使用节点v4。

让我们假设所有的源代码都在lib目录下,index.js文件启动服务器。

lib/
    index.js
    other

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

dist/
    index.js
    other

那么你可以只使用node dist/index.js来运行你的服务器,只需要更改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/

一个选择是创建一个自定义AMI (Amazon Machine Image),并使用它来部署你的应用程序:

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

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

  1. 启动服务器
  2. 自定义安装
  3. 创建图片
  4. 使用您新创建的AMI创建一个弹性豆茎环境

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

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

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

不适合生产使用

不应该在生产环境中使用babel-node。由于缓存存储在内存中,因此内存使用率很高,这是不必要的。当整个应用程序需要在运行中编译时,你也总是会遇到启动性能损失。

相关文章:
  • 没有找到相关文章