“node –harmony”是做什么的?

一个节点应用程序需要我用和谐标志运行节点,如:

node --harmony app.js 

什么是和谐旗帜? 它做什么,为什么没有它的应用程序不能运行?

我试过查看节点命令行选项( node --help ),但它也没有提供任何细节。 节点文档也没有任何帮助。

打字man node在和谐旗帜上有这个:

  --harmony_typeof (enable harmony semantics for typeof) type: bool default: false --harmony_scoping (enable harmony block scoping) type: bool default: false --harmony_modules (enable harmony modules (implies block scoping)) type: bool default: false --harmony_proxies (enable harmony proxies) type: bool default: false --harmony_collections (enable harmony collections (sets, maps, andweak maps)) type: bool default: false --harmony (enable all harmony features (except typeof)) type: bool default: false 

所以--harmony是实现所有和声特性的一个捷径(例如--harmony_scoping--harmony_proxies等等)。从这个博客文章看来,和声使得语言中的新ECMAScript 6特性成为可能。 你的文件不能和谐运行的原因是因为app.js可能使用了新的ECMAScript 6标准中的非向后兼容function(比如块范围,代理,集合,映射等)

它使节点js中的和谐模块成为可能: http ://wiki.ecmascript.org/doku.php? id= harmony:modules

正如节点文档中所提到的,–harmony标志使得ES6不稳定,但是很快就会稳定下来

Node.js上–harmony标志的当前行为仅用于启用分步function。 毕竟,它现在是–es_staging的同义词。 如上所述,这些是完成的function,尚未被认为是稳定的。 如果您想要保证安全,特别是在生产环境中,请考虑删除此运行时标志,直到它在V8上以及Node.js上默认为止。 如果保持启用状态,则应该为进一步的Node.js升级做好准备,以便在V8更改其语义以更紧密地遵循标准时更改代码。

如果要在较早版本的nodejs中运行ECMAScript 6function,可以使用–harmony标志。 最新版本的节点支持ES6,所以不需要–harmony标志