我正在尝试在 Elastic Beanstalk 上部署我的节点服务器,但它无法正常工作,因为 Elastic Beanstalk 开箱即用支持的最新版本是 0.12.6(2015 年 7 月)。使用 io.js 或最新的节点版本 (4.1.2) 都是可行的选择,但尚不清楚如何让 beantalk 启动 ec2 实例来执行此操作。
我尝试了很多东西,包括:
- 将 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 ) - 添加一个文件来下载 4.1.2 源代码并将其解压缩并更新引用,如 https://github.com/kopurando/better-faster-elastic-beanstalk但这似乎也不起作用(版本仍然是 0.12.6)
为什么仅仅运行最新的稳定版本的节点和已经在 AWS 上得到广泛支持 4 个月的东西如此困难?
最佳答案
您可以使用 babel 而不是使用节点 v4将 es6 代码编译为 es5 代码并将 es5 代码部署到 beanstalk。
假设您所有的源代码都在 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因为beanstalk使用npm开始
运行你的服务器
"scripts": {
"start": "node dist/index.js"
}
我喜欢为 es6 使用 babel,因为它对新特性有更多的覆盖。 您可以找到更多信息
node.js 服务器示例:https://github.com/babel/example-node-server
babel 主页:https://babeljs.io/
关于javascript - Elastic Beanstalk 和 ES6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32981705/