检查当前的节点版本

Har*_*fer 116 node.js

我需要以编程方式访问我正在编写的库中运行的当前节点版本.似乎无法在文档中找到这个.

yoj*_*o87 187

尝试查看process.version属性.


als*_*ang 26

Number(process.version.match(/^v(\d+\.\d+)/)[1])

如果process.version是'v0.11.5',那么得到0.11(数字).

  • [node-semver](https://github.com/npm/node-semver)库对此非常有用. (6认同)
  • 哦,是的,`node-semver`是一个更好的解决方案 (2认同)
  • 突然这样 0.10 变成了 0.1 > process.version 'v0.10.40' > Number(process.version.match(/^v(\d+\.\d+)/)[1]) 0.1 (2认同)
  • 不要使用这个,因为 Michael Plakhov 概述的原因:使用十进制数字,0.10 == 0.1 (2认同)

Chr*_*use 23

使用semver进行比较process.version:

const semver = require('semver');

if (semver.gte(process.version, '0.12.18')) {
  ...
}
Run Code Online (Sandbox Code Playgroud)


And*_*ega 20

实际上,最好使用process.versions为不同节点组件提供大量版本的对象.例:

{
  http_parser: '2.5.2',
  node: '4.4.3',
  v8: '4.5.103.35',
  uv: '1.8.0',
  zlib: '1.2.8',
  ares: '1.10.1-DEV',
  icu: '56.1',
  modules: '46',
  openssl: '1.0.2g'
}
Run Code Online (Sandbox Code Playgroud)


Phi*_*ßen 6

如果你只需要检查主要版本,你可以使用这个快速而肮脏的片段:

const NODE_MAJOR_VERSION = process.versions.node.split('.')[0];
if (NODE_MAJOR_VERSION < 12) {
  throw new Error('Requires Node 12 (or higher)');
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • process.versions.node比 更容易使用process.version,因为您不必担心版本是否以前导v.
  • 如果您仍然需要区分古代版本(例如 0.10 和 0.12),这将不起作用,因为它们都将被视为 version "0"