A node application has required me to run node with a harmony flag, like:
node --harmony app.js
What is this harmony flag? What does it do and why can't the app run without it?
I've tried looking into node command-line options (
node --help), but it doesn't provide any details either. Node docs weren't of any help either.
man node has this on the harmony flag:
--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 is a shortcut to enable all the harmony features (e.g.
--harmony_proxies, etc.) From this blog post, it seems harmony enables new ECMAScript 6 features in the language. The reason your file won't run without harmony is because
app.js is probably using non-backward compatible features from the new ECMAScript 6 standard (like block scoping, proxies, sets, maps, etc.)
If you want to run ECMAScript 6 features in older version of nodejs, you can use --harmony flag. Latest version of node supports ES6 so no need of --harmony flag