弹性豆茎和ES6
Elastic Beanstalk and ES6
我试图在Elastic Beanstalk上部署我的节点服务器,但它不会工作,因为最新版本的Elastic Beanstalk支持开箱即用的0.12.6(2015年7月)。使用io.js或最新的节点版本(4.1.2)都是可行的选择,但不清楚如何让beanstalk启动ec2实例来做到这一点。
我试过很多方法,包括:
- 将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) - 添加一个文件,下载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他们的文档中有很多步骤,但简单来说,你需要:
- 启动服务器
- 自定义安装
- 创建图片
- 使用您新创建的AMI创建一个弹性豆茎环境
如果你想运行带有ES2015特性的node,另一个选择是使用babel cli。
您需要将start
任务添加到package.json
:
{
"scripts": {
"start": "babel-node index.js",
},
"dependencies": {
"babel": "^5.8.23",
}
}
然而…不适合生产使用
不应该在生产环境中使用babel-node。由于缓存存储在内存中,因此内存使用率很高,这是不必要的。当整个应用程序需要在运行中编译时,你也总是会遇到启动性能损失。
- 没有找到相关文章