2015-02-01 21 views
7

node.js veya io.js'nin çalışıp çalışmadığını öğrenmek için tek yol, process.versions.node'u denetlemektir. Io.js’de 1.0.4’üm var.io.js veya node.js'nin çalışıp çalışmadığını güvenilir bir şekilde tespit etmenin bir yolu var mı?

Eminim daha iyi bir yol var - herkes biliyor mu?

+0

Bu soruyu şimdi buldum ama birkaç gün önce benzer bir şey sordum ama [nodejs, iojs, jxcore ve ChakraCore js motoruyla düğümün Microsoft çatalını belirleme] (http://stackoverflow.com/ sorular/35037072). – hippietrail

cevap

3

Şimdi en güvenilir çözüm, node -h numaralı uygulamayı çalıştırmak ve iojs.org alt dizesi içerip içermediğine bakmaktır. Eğer varsa - bu iojs var:

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

böyle bir yaklaşımın büyük eksi - bu asenkron bu. Bu yüzden işi basitleştiren küçük bir kütüphane yazdım: is-iojs.

Açıkçası: Kimin ne zaman sürüm 1 ne zaman yayınlanacağını bilen, belki de asla.

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

Ayrıca process.execPath dize kontrol edebilirsiniz, ancak bu yaklaşım olarak bildiğim kadarıyla pencereler için işleryapanlara değil: Ben sadece process.version dayalı şimdi belirlenmesi için düşünüyorum yeterlidir.

+0

"Düğüm" geçerli yürütülebilir dosyayı işaret etmediyse ilk çözüm başarısız olur (yani iki iojs ve düğüm yan yana kurulur ...) –

+1

@FaridNouriNeshat Şimdilik 'düğüm 've' iojs' yüklenemedi yan". Ayrıca anlattığınız problem 'process.execPath' kullanılarak düzeltilebilir. Bu yüzden cevabı güncelledim. Yorum için teşekkürler. – alexpods

+0

Teşekkürler, 'is-iojs' paketiniz bir tedavi çalışmaktadır :-). – khoomeister

İlgili konular