`node --harmony`有什么作用?


180

节点应用程序要求我运行带有和声标志的节点,例如:

node --harmony app.js

什么是和声旗?它有什么作用?没有它,应用程序为什么无法运行?

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

Answers:


135

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标准的非向后兼容功能(例如块范围,代理,集合,地图等)。


59
值得一提的是,和谐是新ECMAscript的名称。和谐名称空间包含的功能是该语言的建议
eis 2012年

1
非常感谢!这下全说通了。顺便说一句。有什么想法man node在Windows中等效吗?:)
jsalonen 2012年

3
@jsalonen没有一个,但是您可以做得到> node --v8-options这里提到的东西
eis 2012年

Windows中的@eis有一个使用--help(或-h)的约定;node -h即使没有特定的man命令,它也适用于大多数控制台程序。但不适用于“ DOS”命令本身。对于那些你可以做help dirhelp set等感叹。
乔恩·库姆斯

我认为@JonCoombs /?与旧的“ dos”命令一起使用。但是无论如何,没有一个标准,例如,我认为我-h使用的标准并不高。
eis 2015年

10

如果要在旧版本的nodejs中运行ECMAScript 6功能,可以使用--harmony标志。最新版本的节点支持ES6,因此不需要--harmony标志



4

如节点文档中所述,--harmony标志启用了ES6的不稳定但不久将稳定的功能

Node.js上--harmony标志的当前行为是仅启用分段功能。毕竟,它现在是--es_staging的同义词。如上所述,这些是尚未被认为稳定的完整功能。如果您想安全起见,尤其是在生产环境中,请考虑删除此运行时标志,直到默认情况下在V8以及因此在Node.js上发布该运行时标志为止。如果保持启用状态,那么如果V8更改其语义以更严格地遵循该标准,则应该为进一步的Node.js升级做好准备,以破坏代码。


0

所有ECMAScript 2015(ES6)功能都分为三组,分别是装运,暂存和进行中功能:

  • V8认为稳定的所有传送功能默认情况下在Node.js上处于启用状态,并且不需要任何类型的运行时标志。

  • 分阶段功能是V8团队认为不稳定的几乎完成的功能,需要运行时标志:- 和谐

  • 进行中的功能可以通过其各自的和声标记单独激活,尽管除非出于测试目的,否则不建议这样做。注意:这些标志由V8公开,并且可能会更改而不会引起任何弃用通知。

来源https : //nodejs.org/en/docs/es6/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.