मुझे उस लाइब्रेरी में चल रहे वर्तमान नोड संस्करण को प्रोग्रामेटिक रूप से एक्सेस करने की आवश्यकता है जो मैं लिख रहा हूं। यह डॉक्स में नहीं मिल रहा है।
मुझे उस लाइब्रेरी में चल रहे वर्तमान नोड संस्करण को प्रोग्रामेटिक रूप से एक्सेस करने की आवश्यकता है जो मैं लिख रहा हूं। यह डॉक्स में नहीं मिल रहा है।
जवाबों:
देखने का प्रयास करें process.version संपत्ति।
process.version.match(/^v(\d+\.\d+)/)[1]
यदि process.version'v0.11.5' है, तो प्राप्त करें 0.11।
node-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.nodeके साथ काम करना आसान है process.version, क्योंकि आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि संस्करण एक अग्रणी के साथ शुरू होता है या नहीं v।"0"।मेरे कोडबेस के साथ भी ऐसा ही मुद्दा था। मैं वर्तमान 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 मुख्य प्रविष्टियाँ हैं: (एक चूना, एक विस्तार)
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' }
यह भी लिखने की बजाय @alsotang द्वारा सुझाए गए अनुसार
Number(process.version.match(/^v(\d+\.\d+)/)[1])
(यह नहीं कह रहा है कि एक बुरा समाधान है)।
आप बस लिख सकते हैं
parseFloat(process.versions.node); यह संस्करण है (बहुवचन) संस्करण नहीं
समान (या समान) परिणाम प्राप्त करना और पढ़ना आसान है