187

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

node --harmony app.js

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

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

4

5 回答 5

141

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

于 2012-11-12T21:45:52.483 回答
13

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

于 2017-05-15T11:04:06.477 回答
5

它在节点 js 中启用和谐模块: http ://wiki.ecmascript.org/doku.php?id=harmony:modules

于 2012-11-12T21:44:43.837 回答
5

正如节点文档中提到的,--harmony 标志启用了 ES6 的不稳定但即将稳定的特性

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

于 2016-07-10T04:03:04.657 回答
4

所有 ECMAScript 2015 (ES6) 功能分为三组,分别用于发布、暂存和进行中的功能:

  • V8 认为稳定的所有发布特性在 Node.js 上默认启用,并且不需要任何类型的运行时标志。

  • Staged features是 V8 团队认为不稳定的几乎完成的功能,需要一个运行时标志:-- harmonic

  • 进行中的功能可以通过它们各自的和谐标志单独激活,尽管除非出于测试目的,否则强烈建议不要这样做。注意:这些标志由 V8 公开,并且可能会在没有任何弃用通知的情况下更改。

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

于 2020-06-19T09:53:36.677 回答