有没有可靠的方法来检测io.js或node.js是否正在运行?

kho*_*ter 7 node.js io.js

我可以判断node.js或io.js是否正在运行的唯一方法是检查process.versions.node.在io.js中,我得到1.0.4.

我相信有更好的方法 - 有人知道吗?

ale*_*ods 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));
    });
}
Run Code Online (Sandbox Code Playgroud)

这种方法的一大缺点是——它是异步的。所以我写了一个小型库来简化工作:is-iojs

但坦率地说:谁知道 Node 版本 1 何时发布,也许永远不会。所以我认为目前的决定仅基于以下几点process.version就足够了:

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

您也可以检查process.execPath字符串,但据我所知,这种方法不适用于 Windows。