Проверьте текущую версию Node

Мне нужно программно получить доступ к текущей версии node, запущенной в библиотеке, которую я пишу. Кажется, не может найти это в документах.

Ответ 1

Попробуйте посмотреть process.version свойство.

Ответ 2

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

если process.version - 'v0.11.5', затем получите 0.11 (Number).

Ответ 3

Используйте semver, чтобы сравнить process.version:

const semver = require('semver');

if (semver.gte(process.version, '0.12.18')) {
  ...
}

Ответ 4

На самом деле было бы лучше использовать объект 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'
}

Ответ 5

У меня была похожая проблема с моей кодовой базой. Я хотел узнать текущую версию NodeJ, которую я собираюсь использовать для запуска моего сервера во время выполнения. Для этого я написал код, который можно запустить перед запуском Сервера, используя скрипт npm run start. Ниже приведен код, полезный для этого вопроса.

'use strict';
const semver = require('semver');
const engines = require('./package').engines;
const nodeVersion = engines.node;

// Compare installed NodeJs version with required NodeJs version.
if (!semver.satisfies(process.version, nodeVersion)) {
  console.log('NodeJS Version Check: Required node version ${nodeVersion} NOT SATISFIED with current version ${process.version}.');
  process.exit(1);
} else {
  console.log('NodeJS Version Check: Required node version ${nodeVersion} SATISFIED with current version ${process.version}.');
}

Мой package.json выглядит так:

{
  "name": "echo-server",
  "version": "1.0.0",
  "engines": {
    "node": "8.5.0",
    "npm": "5.3.0"
  },
  "description": "",
  "main": "index.js",
  "scripts": {
    "check-version" : "node checkVersion.js",
    "start-server" : "node app.js"
    "start" : "npm run check-version && npm run start-server",
    "test": "npm run check-version && echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bluebird": "^3.5.1",
    "express": "^4.16.3",
    "good-guy-http": "^1.10.3",
    "semver": "^5.5.0"
  }
}

npm run start команду npm install перед тем, как npm run start команду npm run start для запуска проекта.

Ответ 6

Если вы обращаетесь к узлу js, работающему в среде, есть 2 основных записи: (один пример, одна деталь)

  • process.version даст вам:

'v10.16.0'

  • process.versions даст вам:
{ http_parser: '2.8.0',
  node: '10.16.0',
  v8: '6.8.275.32-node.52',
  uv: '1.28.0',
  zlib: '1.2.11',
  brotli: '1.0.7',
  ares: '1.15.0',
  modules: '64',
  nghttp2: '1.34.0',
  napi: '4',
  openssl: '1.1.1b',
  icu: '64.2',
  unicode: '12.1',
  cldr: '35.1',
  tz: '2019a' }

Ответ 7

Если вам нужно проверить только основную версию, вы можете использовать этот быстрый и грязный фрагмент:

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

Примечание:

  • С process.versions.node легче работать, чем с process.version, так как вам не нужно беспокоиться о том, начинается ли версия с лидирующей v.
  • Если вам все еще нужно различать древние версии (например, 0.10 и 0.12), это не будет работать, поскольку все они будут считаться версией "0".