Есть ли надежный способ определить, работает ли 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, насколько я знаю.