2015-02-01 10 views
7

एकमात्र तरीका मैं अनुमान लगा सकता हूं कि node.js या io.js चल रहा है या नहीं process.versions.node जांचना है। Iio.js में, मुझे 1.0.4 मिलता है।क्या यह पता लगाने का एक विश्वसनीय तरीका है कि io.js या node.js चल रहा है या नहीं?

मुझे यकीन है कि एक बेहतर तरीका है - किसी को भी पता है?

+0

मुझे अभी यह प्रश्न मिला है लेकिन कुछ दिन पहले मैंने कुछ इसी तरह से पूछा लेकिन [नोडजे, आईओजेएस, जेक्सकोर, और चक्रकोर जेएस इंजन के साथ माइक्रोसॉफ्ट का फोर्क के बीच का पता लगाने] (http://stackoverflow.com/ प्रश्न/35,037,072)। – hippietrail

उत्तर

3

अब सबसे विश्वसनीय समाधान node -h निष्पादित करना है और देखें कि इसमें iojs.org सबस्ट्रिंग है। यदि ऐसा है - यह iojs है:

function isIojs(callback) { 
    require('child_process').exec(process.execPath + ' -h', function(err, help) { 
     return err ? callback(err) : callback(null, /iojs\.org/.test(help)); 
    }); 
} 

इस तरह के दृष्टिकोण का बड़ा शून्य से - यह अतुल्यकालिक है। इसलिए मैंने एक छोटी पुस्तकालय लिखी जो नौकरी को सरल बना रहा है: is-iojs

लेकिन स्पष्ट रूप से बोल रहा है: कौन जानता है कि नोड संस्करण 1 जारी किया जाएगा, शायद कभी नहीं। इसलिए मैं अब केवल process.version के आधार पर निर्धारण के लिए लगता है कि पर्याप्त है:

var isIojs = parseInt(process.version.match(/^v(\d+)\./)[1]) >= 1; 

इसके अलावा, आप जाँच कर सकते हैं process.execPath स्ट्रिंग, लेकिन इस दृष्टिकोण के रूप में तक मुझे पता है खिड़कियों के लिए काम करता है नहीं करता है।

+0

पहला समाधान विफल होगा यदि 'नोड' वर्तमान निष्पादन योग्य (यानी दो आईओजे और नोड को तरफ से स्थापित किया जा रहा है ...) –

+1

@ फ़ारिदनोरीशेशत अब के लिए 'नोड' और 'iojs' स्थापित नहीं किया जा सकता "पक्ष बगल में"। आपके द्वारा वर्णित समस्या को 'process.execPath' का उपयोग करके ठीक किया जा सकता है। तो मैंने जवाब अपडेट किया। टिप्पणी के लिए धन्यवाद। – alexpods

+0

धन्यवाद, आपका 'is-iojs' पैकेज एक इलाज करता है :-)। – khoomeister

संबंधित मुद्दे

 संबंधित मुद्दे