আমি যে লাইব্রেরীতে লিখছি তা চলমান নোড সংস্করণটি প্রোগ্রামিয়ালি অ্যাক্সেস করা দরকার। ডক্সে এটি খুঁজে পাওয়া যাবে না বলে মনে হচ্ছে।
আমি যে লাইব্রেরীতে লিখছি তা চলমান নোড সংস্করণটি প্রোগ্রামিয়ালি অ্যাক্সেস করা দরকার। ডক্সে এটি খুঁজে পাওয়া যাবে না বলে মনে হচ্ছে।
উত্তর:
প্রসেস.ভার্সন সম্পত্তিটি দেখার চেষ্টা করুন ।
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"।আমার কোডবেসে আমার একই সমস্যা ছিল। আমি বর্তমান নোডজেস সংস্করণটি জানতে চেয়েছিলাম যে আমি রানটাইমে আমার সার্ভারটি চালানোর জন্য ব্যবহার করতে যাচ্ছি। তার জন্য, আমি একটি কোড লিখেছিলাম যা 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আগে আপনি Run Command 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' }
এছাড়াও @salotang দ্বারা প্রস্তাবিত হিসাবে পুরো লিখার পরিবর্তে
Number(process.version.match(/^v(\d+\.\d+)/)[1])
(না বলা এটি একটি খারাপ সমাধান)
আপনি সহজভাবে লিখতে পারেন
parseFloat(process.versions.node); এটি সংস্করণ নয় (বহুবচন) সংস্করণ নয়
একই বা (অনুরূপ) ফলাফল পেতে এবং পড়া সহজ