2016-01-27 35 views
5

現在有幾個nodejs的分支,其中一些支持除了Google的V8引擎以外的JavaScript引擎。如何從nodejs檢測到它正在運行的JavaScript引擎?

對於我的節點代碼來查看它運行在哪個JS引擎下,目前最好的方法是什麼?

我所知道的發動機是:

  • 谷歌的V8 - 由官方node.js的iojs叉支持的唯一引擎。由支持的引擎之一JXcore
  • Mozilla的SpiderMonkey - 支持的引擎之一JXcore
  • 微軟ChakraCore - 通過node.js中的微軟的端口和JXcore支持,雖然我還沒有得到這一個工作尚未引擎顯然一個支持的引擎。

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

「進程」和「版本」對象中的字段實際上在nodejs端口之間具有不同的字段。我想記錄一個答案的差異,但到目前爲止,我無法比較MS的nodejs與ChakraCore與Chakra的JXcore,因爲我無法找到[如何在Windows 7上使用後者](http://stackoverflow.com /問題/ 35055401)。 – hippietrail

+2

JXcore還將引擎版本號保存在'process.versions'中。目前這是'v8','sm'(SpiderMonkey)或'ch'(Chakra)。 – infografnet

相關問題