Есть ли надежный способ определить, работает ли io.js или node.js?

Единственный способ определить, работает ли node.js или io.js, это проверить process.versions.node, В io.js я получаю 1.0.4.

Я уверен, что есть лучший способ - кто-нибудь знает?

1 ответ

Решение

Теперь самое надежное решение - выполнить 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 Строка, но этот подход не работает для Windows, насколько я знаю.

Другие вопросы по тегам