为什么Firebase云功能上的Node版本如此之久?

Div*_*nka 13 firebase google-cloud-functions

根据https://cloud.google.com/functions/docs/writing/,Firebase云功能使用Node v6.11.5

是否有任何见解为什么选择这样一个旧版本,特别是考虑到它使我无法在像ECMA6这样的JS语言中使用更新的语法?

Dou*_*son 10

编辑:截至2018年,Cloud Functions已退出测试阶段.现在有节点8支持,但它目前处于测试阶段.

有许多事情要记住.

云功能仅使用具有LTS(长期支持)的节点版本.只有偶数版本的节点才能接收LTS.

云功能处于测试阶段,工程团队比提供新版本的节点更重要.实现生产就绪是一个优先事项,并不一定涉及拥有最新版本的节点.

简单地放入新的主要版本是不可行的,因为这可能会破坏现有的客户端.可能必须是每个项目都可以选择他们想要使用的节点版本的情况,这是一个重大变化.

您可以使用任何可以转换为ES6的语言.如果您愿意,这包括TypeScript甚至Kotlin. Firebase CLI直接支持TypeScript,现在已有几个月了.TypeScript实际上是Firebase团队推荐的开发语言.

如果您希望掌握Cloud Functions开发的最新语言,我强烈建议您不要依赖于节点的版本.相反,选择可以转换为ES6的工具.

  • 虽然我接受了你的答案,但有更新的LTS版本(https://nodejs.org/en/blog/release/v8.9.0/),后来添加了很多......我知道有关转换,但我我不确定这些好处总是匹配的.例如ES6有"import",它被转换为"require",但前者只是后者的包装?如果没有,我们不会错过一些新语言的优势? (3认同)
  • 当几乎没有TS文档且TS和JS之间的API不同时,你会说Firebase推荐使用TS,这真的很奇怪. (2认同)

dar*_*inm 8

Firebase云功能现在支持节点8.有关如何升级的说明:云功能:迁移到节点8.

更新:官方公告和说明.


Dom*_*nic 7

更新:现在不建议使用节点6。firebase-tools现在,最新版本将以下内容添加到中functions/package.json,如果您没有,则可以添加它:

"engines": { "node": "8" }
Run Code Online (Sandbox Code Playgroud)

Firebase刚刚启动了对Node 10的beta支持,您也可以使用它:

"engines": { "node": "10" }
Run Code Online (Sandbox Code Playgroud)

请注意,当前在使用Node 10时存在一个错误,应在撰写本文的1周内(即5月12日这一周)修复。