Что делает `node --harmony`?

165

Приложение node потребовало от меня запускать node с флагом гармонии, например:

node --harmony app.js

Что это за флаг гармонии? Что он делает и почему приложение не может работать без него?

Я попытался просмотреть параметры командной строки node (node --help), но он также не содержит никаких подробностей. node Документы также не помогли.

Теги:

4 ответа

120
Лучший ответ

Ввод 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 (например, область обзора, прокси, наборы, карты и т.д.)

  • 51
    Стоит отметить, что Harmony - это имя, используемое для нового ECMAscript . Пространство имен Harmony содержит функции, которые являются предложениями для этого языка .
  • 1
    Большое спасибо! Все это имеет смысл сейчас. Btw. Есть идеи, что эквивалентно man node в Windows? :)
Показать ещё 3 комментария
4

Он включает модули гармонии в node js: http://wiki.ecmascript.org/doku.php?id=harmony:modules

  • 2
    модули - это только одна особенность гармонии.
1

Если вы хотите запускать функции ECMAScript 6 в старой версии nodejs, вы можете использовать флаг --harmony. Последняя версия node поддерживает ES6, поэтому нет необходимости использовать флаг -harmony

1

Как упоминалось в документации Node, флаг -harmony позволяет использовать нестабильные, но для скоростоящих функций ES6

Текущее поведение флага --harmony на Node.js заключается в том, чтобы включить только поэтапные функции. В конце концов, теперь это синоним --es_staging. Как упоминалось выше, это завершенные функции, которые пока не считаются стабильными. Если вы хотите играть в безопасном режиме, особенно в производственных средах, подумайте об удалении этого флага времени выполнения, пока он не отправит по умолчанию на V8 и, следовательно, на Node.js. Если вы поддерживаете это, вы должны быть готовы к дальнейшим обновлениям Node.js, чтобы разбить свой код, если V8 изменяет свою семантику, чтобы более точно следовать стандарту.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню