从AWS-Lambda和无服务器框架开始,我对节点版本感到困惑:
AWS help site表示(2016年3月21日)
AWS Lambda支持以下运行时版本:
Node.js:v0.10.36
所以我在本地机器上安装了Node.js v0.10.36。通过
安装最新的(v 0.4.2)无服务器框架npm install serverless -g
它发出以下警告:
npm WARN引擎serverless@0.4.2:want:{“node”:“> = 4.0”}(当前: { “节点”: “0.10.36”, “NPM”: “1.4.28”})
我认为在本地拥有与AWS相同的版本可能有助于拥有一致的开发环境......我错了吗?我应该在本地运行什么Node.js版本才能充分利用无服务器?
答案 0 :(得分:6)
无服务器框架需要Node.js v4.0或更高版本。任何版本的v4.x或v5.x中的Node.js都应该可以工作。
AWS Lambda目前仅支持Node.js v0.10.36,这是正确的。在Node.js v4.0上构建无服务器框架的决定是在预期AWS Lamabda最终将支持Node.js v4.0或更高版本的情况下完成的。
在为AWS Lambda开发代码时,您应该继续仅使用与Node.js v0.10.36兼容的功能。如果您对框架做出了任何贡献,则可以使用v4.0 +中提供的Node.js功能。
另一个选择是使用Babelify将您的ES2015代码上传转换为AWS Lambda。这使您可以在ES2015中进行开发,而无需等待AWS Lambda正式支持它。每次使用Optimizer Plugin部署无服务器框架时,都可以自动完成此操作。
更新:现在存在一个新选项Serverless Babel Runtime。这比Optimizer的功能更进一步,并在运行时本身内使用Babel。
更新2:AWS Lambda现在支持Node.js v4.3。
答案 1 :(得分:1)
如果您开始使用全新的项目,我将极力避免从节点0.10.x开始。那个版本刚刚接收到重要的安全修复程序,而且仅在另外五个月内(直到2016年10月)。
Node.js采用了通用的长期支持(LTS)模式,以保证发布的及时性和稳定性。节点Here is the current LTS plan。
我强烈建议您从版本4或5开始,具体取决于您对变更的兴趣并使您的项目保持最新。您将能够利用numerous new features超过0.10 / 0.12版本,并为ES6做好准备。
答案 2 :(得分:1)
接受的答案是指向最新的无服务器版本不支持的Serverless Babel Runtime。相反,如果您尝试通过Babel和Webpack添加ES6支持,则应该查看Serverless Webpack插件。
以下是有关如何执行此操作的详细说明 - http://serverless-stack.com/chapters/add-support-for-es6-javascript.html