Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does `node --harmony` do?

People also ask

What is Node best used for?

Node. js is primarily used for non-blocking, event-driven servers, due to its single-threaded nature. It's used for traditional web sites and back-end API services, but was designed with real-time, push-based architectures in mind.

Why is node so important?

The most important advantages of Node include: it makes it really fast to build real-time, high-traffic apps (eg. chats or gaming) It makes it possible to code in JavaScript for both the client and server-side.

What is the goal of node JS?

Node. js is a platform built on Chrome's JavaScript runtime for easily building fast and scalable network applications. Node. js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

How does node JS actually work?

It is a used as backend service where javascript works on the server-side of the application. This way javascript is used on both frontend and backend. Node. js runs on chrome v8 engine which converts javascript code into machine code, it is highly scalable, lightweight, fast, and data-intensive.


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.)


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


As mentioned in the Node Documentation, --harmony flag enables the non stable but tobe soon stabled features of ES6

The current behaviour of the --harmony flag on Node.js is to enable staged features only. After all, it is now a synonym of --es_staging. As mentioned above, these are completed features that have not been considered stable yet. If you want to play safe, especially on production environments, consider removing this runtime flag until it ships by default on V8 and, consequently, on Node.js. If you keep this enabled, you should be prepared for further Node.js upgrades to break your code if V8 changes their semantics to more closely follow the standard.


All ECMAScript 2015 (ES6) features are split into three groups for shipping, staged, and in progress features:

  • All shipping features, which V8 considers stable, are turned on by default on Node.js and do NOT require any kind of runtime flag.

  • Staged features, which are almost-completed features that are not considered stable by the V8 team, require a runtime flag: --harmony.

  • In progress features can be activated individually by their respective harmony flag, although this is highly discouraged unless for testing purposes. Note: these flags are exposed by V8 and will potentially change without any deprecation notice.

source: https://nodejs.org/en/docs/es6/