2016-01-27 14 views
5

Hiện tại có một số nhánh của nodej và một số hỗ trợ các công cụ JavaScript khác với động cơ V8 của Google.Làm thế nào để phát hiện từ nodejs mà động cơ JavaScript nó đang chạy trên?

Đối với mã nút của tôi để xem động cơ JS nào đang chạy, cách nào là cách tốt nhất?

Các công cụ tôi biết là:

  • của Google V8 - Động cơ chỉ được hỗ trợ bởi các quan chức Node.jsiojs nĩa. Một trong những động cơ được hỗ trợ bởi JXcore.
  • Mozilla SpiderMonkey - Một trong các công cụ được hỗ trợ bởi JXcore.
  • của Microsoft ChakraCore - Động cơ được hỗ trợ bởi cổng Microsoft 's của Node.js và dường như một trong những công cụ hỗ trợ bởi JXcore mặc dù tôi đã không nhận được rằng một để làm việc được nêu ra.

(I've asked a separate question about detecting which fork of nodejs is being used. Câu hỏi này chỉ khoảng phát hiện động cơ JS.)

Trả lời

7

Đối tượng process chứa rất nhiều thông tin về quá trình hiện đang chạy (trong trường hợp này, nút).

My process.versions ví dụ, có chứa các phiên bản hiện tại của 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' 
    } 
} 

Bạn sẽ có thể truy vấn đối tượng này và xác định các động cơ hiện nay.

+0

Các trường trong các đối tượng 'process' và' phiên bản' thực sự có các trường khác nhau giữa các cổng nodej. Tôi muốn tài liệu sự khác biệt trong một câu trả lời nhưng cho đến nay tôi không thể so sánh nodejs của MS với ChakraCore chống lại JXcore với Chakra như tôi không thể tìm ra [làm thế nào để sử dụng sau này trên Windows 7] (http://stackoverflow.com/câu hỏi/35055401). – hippietrail

+2

JXcore cũng giữ số phiên bản động cơ trong 'process.versions'. Hiện tại, đây là 'v8',' sm' (SpiderMonkey) hoặc 'ch' (Chakra). – infografnet

Các vấn đề liên quan