বর্তমান নোড সংস্করণ পরীক্ষা করুন


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> process.version 'v0.10.40'> সংখ্যায় পরিণত হবে (process.version.match (/ ^ v (\ d + \। \ D +) /) [1]) 0.1
— মাইকেল প্লাখভ

মাইকেল প্লাখভ দ্বারা বর্ণিত কারণের জন্য এটি ব্যবহার করবেন না: দশমিক সংখ্যা ব্যবহার করে, 0.10 == 0.1
— সিজারসোল


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

আমার কোডবেসে আমার একই সমস্যা ছিল। আমি বর্তমান নোডজেস সংস্করণটি জানতে চেয়েছিলাম যে আমি রানটাইমে আমার সার্ভারটি চালানোর জন্য ব্যবহার করতে যাচ্ছি। তার জন্য, আমি একটি কোড লিখেছিলাম যা 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

আপনি যদি নোড জেএস চলমান পরিবেশগুলিতে অ্যাক্সেস করেন তবে 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

এছাড়াও @salotang দ্বারা প্রস্তাবিত হিসাবে পুরো লিখার পরিবর্তে

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

(না বলা এটি একটি খারাপ সমাধান)

আপনি সহজভাবে লিখতে পারেন

parseFloat(process.versions.node); এটি সংস্করণ নয় (বহুবচন) সংস্করণ নয়

একই বা (অনুরূপ) ফলাফল পেতে এবং পড়া সহজ


এই পদ্ধতিটি ব্যবহার করবেন না: অন্যান্য মন্তব্যে যেমন বলা হয়েছে, এইভাবে পার্স করা সংস্করণটিকে ভুল উপায়ে
— পাঠায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.