What does `node --harmony` do?

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


It enables harmony modules in node js: http://wiki.ecmascript.org/doku.php?id=harmony:modules


Typing 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

So --harmony is a shortcut to enable all the harmony features (e.g. --harmony_scoping, --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.)