Что делает node --harmony`?
Приложение node потребовало от меня запускать node с флагом гармонии, например:
node --harmony app.js
Что это за флаг гармонии? Что он делает и почему приложение не может работать без него?
Я попытался просмотреть параметры командной строки node (node --help
), но он также не содержит никаких подробностей. node Документы также не помогли.
Ответы
Ответ 1
Ввод 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
So --harmony
является ярлыком для включения всех функций гармонии (например, --harmony_scoping
, --harmony_proxies
и т.д.) Из это сообщение в блоге, похоже, гармония позволяет использовать новые функции ECMAScript 6 на этом языке. Причина, по которой ваш файл не будет работать без согласования, состоит в том, что app.js
, вероятно, использует функции, не поддерживающие обратную совместимость, из нового стандарта ECMAScript 6 (например, область обзора, прокси, наборы, карты и т.д.)
Ответ 2
Он включает модули гармонии в node js:
http://wiki.ecmascript.org/doku.php?id=harmony:modules
Ответ 3
Как упоминалось в документации Node, флаг -harmony позволяет использовать нестабильные, но для скоростоящих функций ES6
Текущее поведение флага --harmony на Node.js заключается в том, чтобы включить только поэтапные функции. В конце концов, теперь это синоним --es_staging. Как упоминалось выше, это завершенные функции, которые пока не считаются стабильными. Если вы хотите играть в безопасном режиме, особенно в производственных средах, подумайте об удалении этого флага времени выполнения, пока он не отправит по умолчанию на V8 и, следовательно, на Node.js. Если вы поддерживаете это, вы должны быть готовы к дальнейшим обновлениям Node.js, чтобы разбить свой код, если V8 изменяет свою семантику, чтобы более точно следовать стандарту.
Ответ 4
Если вы хотите запускать функции ECMAScript 6 в старой версии nodejs, вы можете использовать флаг --harmony.
Последняя версия node поддерживает ES6, поэтому нет необходимости использовать флаг -harmony