[node.js] 현재 노드 버전 확인

작성중인 라이브러리에서 실행중인 현재 노드 버전에 프로그래밍 방식으로 액세스해야합니다. 문서에서 이것을 찾을 수 없습니다.



답변

process.version 속성을 보십시오 .


답변

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

경우 process.version는 ‘v0.11.5’, 다음 얻을 0.11.


답변

semver 를 사용 하여 비교하십시오 process.version.

const semver = require('semver');

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


답변

실제로 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'
}


답변

메이저 버전 만 확인해야하는 경우 다음과 같은 더 빠르고 더러운 스 니펫을 사용할 수 있습니다.

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

노트:

  • process.versions.nodeprocess.version버전이 선행으로 시작하는지에 대해 걱정할 필요가 없으므로 보다 작업하기 쉽습니다.v .
  • 여전히 고대 버전 (예 : 0.10 및 0.12)을 구별해야하는 경우 모두 버전으로 간주되므로 작동하지 않습니다 "0".

답변

내 코드베이스와 비슷한 문제가있었습니다. 런타임에 서버를 실행하는 데 사용할 현재 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 install당신이 실행하기 전에 명령을 npm run start프로젝트를 실행하는 명령을 사용합니다.


답변

노드 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' }