一个节点应用程序要求我运行带有和谐标志的节点,例如:
node --harmony app.js
这是什么和谐旗?它有什么作用,为什么没有它应用程序不能运行?
我试过查看节点命令行选项(node --help
),但它也没有提供任何细节。节点文档也没有任何帮助。
一个节点应用程序要求我运行带有和谐标志的节点,例如:
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 标准中的非向后兼容功能(如块范围、代理、集合、地图等)
如果要在旧版本的 nodejs 中运行 ECMAScript 6 功能,可以使用 --harmony 标志。最新版本的节点支持 ES6,因此不需要 --harmony 标志
它在节点 js 中启用和谐模块: http ://wiki.ecmascript.org/doku.php?id=harmony:modules
正如节点文档中提到的,--harmony 标志启用了 ES6 的不稳定但即将稳定的特性
Node.js 上 --harmony 标志的当前行为是仅启用分阶段功能。毕竟,它现在是 --es_staging 的同义词。如上所述,这些是尚未被认为稳定的已完成功能。如果您想安全起见,尤其是在生产环境中,请考虑删除此运行时标志,直到它默认在 V8 上发布,然后在 Node.js 上发布。如果您保持启用此功能,您应该为进一步的 Node.js 升级做好准备,以便在 V8 更改其语义以更紧密地遵循标准时破坏您的代码。
所有 ECMAScript 2015 (ES6) 功能分为三组,分别用于发布、暂存和进行中的功能:
V8 认为稳定的所有发布特性在 Node.js 上默认启用,并且不需要任何类型的运行时标志。
Staged features是 V8 团队认为不稳定的几乎完成的功能,需要一个运行时标志:-- harmonic。
进行中的功能可以通过它们各自的和谐标志单独激活,尽管除非出于测试目的,否则强烈建议不要这样做。注意:这些标志由 V8 公开,并且可能会在没有任何弃用通知的情况下更改。