वर्तमान नोड संस्करण के लिए जाँच करें


131

मुझे उस लाइब्रेरी में चल रहे वर्तमान नोड संस्करण को प्रोग्रामेटिक रूप से एक्सेस करने की आवश्यकता है जो मैं लिख रहा हूं। यह डॉक्स में नहीं मिल रहा है।

जवाबों:



29

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

यदि process.version'v0.11.5' है, तो प्राप्त करें 0.11


6
नोड semver पुस्तकालय इस के लिए बहुत उपयोगी हो सकता है।
बीमन

2
ओह हां, node-semverएक बेहतर
इलाज है

2
अचानक इस तरह से 0.10 0.1> प्रोसेस हो जाता है। 'version' v0.10.40 '> नंबर (process.version.match (/ ^ v (\ d + \। \ D +) /)] [1]) 0.1
माइकल प्लखोव

माइकल प्लाखोव द्वारा उल्लिखित कारण के लिए इस का उपयोग न करें: दशमलव संख्या का उपयोग करते हुए, 0.10 == 0.1
caesarsol


23

वास्तव में 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

यदि आपको केवल प्रमुख संस्करण की जांच करनी है, तो आप इस त्वरित और गंदे स्निपेट का उपयोग कर सकते हैं:

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"

2

मेरे कोडबेस के साथ भी ऐसा ही मुद्दा था। मैं वर्तमान NodeJs संस्करण को जानना चाहता था जिसका उपयोग मैं अपने सर्वर को रनटाइम पर चलाने के लिए करने जा रहा हूं। उसके लिए, मैंने एक कोड लिखा था जो 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}.`);
}

मेरा पैकेज। इस तरह दिखता है:

{
  "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अपनी परियोजना को चलाने के लिए आदेश।


2

यदि आप नोड्स के चलने वाले वातावरण का उपयोग करते हैं, तो 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' }

0

यह भी लिखने की बजाय @alsotang द्वारा सुझाए गए अनुसार

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

(यह नहीं कह रहा है कि एक बुरा समाधान है)।

आप बस लिख सकते हैं

parseFloat(process.versions.node); यह संस्करण है (बहुवचन) संस्करण नहीं

समान (या समान) परिणाम प्राप्त करना और पढ़ना आसान है


इस विधि का उपयोग न करें: जैसा कि अन्य टिप्पणियों में कहा गया है, इस तरह से पार्स करना संस्करण को गलत तरीके से पढ़ा जाता है: 9.10 == 9.1
केसरसोल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.