2016-01-27 8 views
5

nodejのいくつかのフォークがあり、それらのいくつかはGoogleのV8エンジン以外のJavaScriptエンジンをサポートしています。どのJavaScriptエンジンを実行しているnodejsからの検出方法ですか?

私のノードコードでは、どのJSエンジンが動作しているかを確認するのに、現在どのような方法が最適ですか?私が知っ

エンジンは、次のとおりです。

  • GoogleのV8 - 公式Node.jsのiojsフォークでサポートされている唯一のエンジン。 JXcoreでサポートされているエンジンの1つ。
  • Mozilla's SpiderMonkey - でサポートされているエンジンの1つJXcore
  • MicrosoftのChakraCore - マイクロソフトさんのNode.jsのポートと、私はまだ動作する1つを持っていないのにJXcoreでサポートされているエンジンの明らかに1でサポートされているエンジン。

I've asked a separate question about detecting which fork of nodejs is being used.この質問のみJSエンジンを検出する程度である。)

答えて

7

processオブジェクトは(この場合、ノード)は、現在実行中のプロセスに関する多くの情報を含んでいます。例えば

マイprocess.versions、V8の現在のバージョンが含まれています

process: { 
    versions: { 
     http_parser: '2.5.0', 
     node: '4.2.4', 
     v8: '4.5.103.35', 
     uv: '1.7.5', 
     zlib: '1.2.8', 
     ares: '1.10.1-DEV', 
     icu: '56.1', 
     modules: '46', 
     openssl: '1.0.2e' 
    } 
} 

あなたは、このオブジェクトを照会し、現在のエンジンを決定することができるはずです。

+0

'process'オブジェクトと' versions'オブジェクトのフィールドは実際にはnodejsポート間で異なるフィールドを持っています。私は答えの違いを文書化したいと思いますが、これまで私は[Windows 7で後者を使用する方法]を見つけることができないので、私はチャクラとJXcoreに対してChakraCoreとMSのnodejを比較することはできません(http://stackoverflow.com/questions/35055401)。 – hippietrail

+2

JXcoreはエンジンバージョン番号も 'process.versions'に保持します。現在、これは 'v8'、' sm'(SpiderMonkey)、 'ch'(Chakra)です。 – infografnet