`node --harmony`は何をしますか?


180

ノードアプリケーションでは、次のように調和フラグを使用してノードを実行する必要があります。

node --harmony app.js

この調和の旗は何ですか?それは何をし、なぜそれなしではアプリを実行できないのですか?

ノードのコマンドラインオプション(node --help)を調べてみましたが、詳細も表示されません。ノードのドキュメントも役に立ちませんでした。

回答:


135

入力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

だから、--harmonyすべての調和の特徴(例えば有効にするためのショートカットである--harmony_scoping--harmony_proxiesから、など)このブログ記事は、調和し、言語に新しいECMAScriptの6つの機能を有効に思えます。ファイルが調和なしで実行されない理由app.jsは、おそらく新しいECMAScript 6標準の下位互換性のない機能(ブロックスコープ、プロキシ、セット、マップなど)を使用しているためです。


59
Harmonyが新しいECMAscriptに使用される名前であることは言及する価値があります。Harmony名前空間には、その言語の提案である機能が含まれています
EIS

1
どうもありがとう!今ではすべてが理にかなっています。ところで man nodeWindowsでの同等のアイデアは何ですか?:)
jsalonen

3
@jsalonenはありません> node --v8-optionsが、ここで参照されているものを取得するために実行できます
eis

Windowsでは@eisを使用する--help(または-h)規則があります。これはほとんどのコンソールプログラムで機能するためnode -h、特定のmanコマンドがなくても機能します。しかし、「DOS」コマンド自体ではありません。あなたができる人のためhelp dirhelp set、など、ため息。
Jon Coombs、2015年

@JonCoombs私/?は古い "dos"コマンドでより使用されていると思います。しかし、いずれにしても、標準は1つではありません-h。たとえば、多くの使用例を見たことはないと思います。
e5

10

古いバージョンのnodejsでECMAScript 6機能を実行する場合は、-harmonyフラグを使用できます。ノードの最新バージョンはES6をサポートしているため、-harmonyフラグは不要です



4

ノードのドキュメントで述べたように、-harmonyフラグを使用すると、ES6の非安定ですが間もなく安定する機能が有効になります

Node.jsの--harmonyフラグの現在の動作は、ステージングされた機能のみを有効にすることです。結局のところ、これは--es_stagingの同義語になりました。上記のように、これらはまだ安定しているとは見なされていない完成した機能です。特に本番環境で安全にプレイしたい場合は、このランタイムフラグを削除して、デフォルトでV8に出荷され、その結果Node.jsに出荷されるようにすることを検討してください。これを有効にしておくと、V8がセマンティクスを変更して標準に厳密に準拠するようになった場合に、コードを壊すためにNode.jsをさらにアップグレードする準備をする必要があります。


0

ECMAScript 2015(ES6)のすべての機能は、出荷、ステージング、進行中の機能のために3つのグループに分かれています。

  • V8が安定していると見なすすべての出荷機能は、Node.jsではデフォルトでオンになっており、いかなるランタイムフラグも必要としません。

  • V8チームによって安定しているとは見なされないほぼ完成した機能である段階的な機能には、ランタイムフラグが必要です。-調和

  • 進行中の機能は、それぞれの調和フラグによって個別にアクティブ化できますが、テスト目的でない限り、これはお勧めできません。注:これらのフラグはV8で公開されており、廃止の通知なしに変更される可能性があります。

ソースhttps : //nodejs.org/en/docs/es6/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.