🌐 Detecting your location…

Node.js-এ ERR_OSSL_EVP_UNSUPPORTED ত্রুটি কীভাবে ঠিক করবেন

⏱️2 min read  ·  274 words

ত্রুটিত্রুটি:0308010C:ডিজিটাল খামের রুটিন::অসমর্থিত Node.js-এ (ERR_OSSL_EVP_UNSUPPORTED) সাধারণত নতুন Node.js সংস্করণে পুরানো প্রকল্প (প্রায়শই ওয়েবপ্যাক সহ) তৈরি করার সময় উপস্থিত হয়। এটি OpenSSL 3 পুরানো অ্যালগরিদমগুলির জন্য সমর্থন অপসারণের কারণে হয়েছে৷ এখানে এটি সঠিকভাবে ঠিক কিভাবে.

কেন এটা ঘটে

Node.js 17+ বান্ডেল OpenSSL 3, যা নিরাপত্তার জন্য কিছু লিগ্যাসি অ্যালগরিদম (যেমন পুরানো MD4-ভিত্তিক হ্যাশিং) অক্ষম করে। ওয়েবপ্যাকের পুরানো সংস্করণ এবং কিছু অন্যান্য সরঞ্জাম অভ্যন্তরীণভাবে (মডিউল হ্যাশিংয়ের জন্য) এই এখন-অসমর্থিত অ্যালগরিদমগুলি ব্যবহার করে। যখন তারা সরানো অ্যালগরিদমকে কল করে, OpenSSL 3 ERR_OSSL_EVP_UNSUPPORTED থ্রো করে। এটি পুরানো টুলিং এবং নতুন OpenSSL এর মধ্যে একটি সামঞ্জস্যের ব্যবধান।

সেরা সমাধান: আপনার টুলিং আপডেট করুন

# The real fix is updating the tool that uses the legacy algorithm.
# For Webpack (the most common cause):
npm install webpack@latest webpack-cli@latest

# Newer Webpack (5.61+) uses a supported hashing algorithm.
# Also update related tools:
npm install react-scripts@latest   # if using Create React App
npm update                          # update dependencies generally

বর্তমান টুল সংস্করণে আপডেট করা সঠিক সমাধান – তারা OpenSSL 3-সামঞ্জস্যপূর্ণ অ্যালগরিদম ব্যবহার করে। যখন আপনি অবিলম্বে আপডেট করতে পারবেন না তখন নীচের সমাধানগুলি অস্থায়ী সেতু।

ওয়ার্কআরাউন্ড 1: লিগ্যাসি OpenSSL প্রদানকারী ফ্ল্যাগ

# Set the NODE_OPTIONS environment variable to re-enable legacy algorithms

# macOS/Linux
export NODE_OPTIONS=--openssl-legacy-provider
npm run build

# Windows (Command Prompt)
set NODE_OPTIONS=--openssl-legacy-provider

# Windows (PowerShell)
$env:NODE_OPTIONS="--openssl-legacy-provider"

সমাধান 2: package.json স্ক্রিপ্টে (ক্রস-প্ল্যাটফর্ম)

// Add the flag directly to your scripts
{
  "scripts": {
    "build": "NODE_OPTIONS=--openssl-legacy-provider webpack",
    "start": "NODE_OPTIONS=--openssl-legacy-provider webpack serve"
  }
}

// For cross-platform (Windows + Unix), use cross-env:
// npm install --save-dev cross-env
{
  "scripts": {
    "build": "cross-env NODE_OPTIONS=--openssl-legacy-provider webpack"
  }
}

ওয়ার্কঅ্যারাউন্ড 3: ডাউনগ্রেড Node.js (শেষ রিসোর্ট)

# If updating tooling isn't possible, use an older Node version
# with OpenSSL 1.1 (Node 16 or earlier)

# With nvm:
nvm install 16
nvm use 16
npm run build

# This is a temporary measure - Node 16 is old. Prefer updating
# your tooling to work with modern Node/OpenSSL.

কোন পদ্ধতি বেছে নিতে হবে

পরিস্থিতি সেরা পদ্ধতি
নির্ভরতা আপডেট করতে পারে ওয়েবপ্যাক/টুলিং আপডেট করুন (সঠিক সমাধান)
এখন কাজ করা দরকার, পরে ঠিক করা হবে –openssl-উত্তরাধিকার-প্রদানকারী পতাকা
নির্ভরতা স্পর্শ করতে পারে না উত্তরাধিকার পতাকা বা ডাউনগ্রেড নোড
পুরানো প্রকল্প, আপডেট করা যাচ্ছে না ডাউনগ্রেড নোড (অস্থায়ী)

উত্তরাধিকার প্রদানকারীর পতাকা একটি দ্রুত আনব্লক, কিন্তু অবচ্যুত অ্যালগরিদমগুলিকে পুনরায় সক্ষম করা দীর্ঘমেয়াদী আদর্শ নয়৷ আপনি যখন পারেন আপনার টুলিং আপডেট করার অগ্রাধিকার দিন।

আপনার সংস্করণ যাচাই করা হচ্ছে

# Check your Node.js version (17+ has OpenSSL 3)
node --version

# Check OpenSSL version Node is using
node -e "console.log(process.versions.openssl)"
# 3.x.x means OpenSSL 3 (causes this error with old tools)

# Check Webpack version
npx webpack --version
# 5.61+ handles OpenSSL 3 correctly

প্রায়শই জিজ্ঞাসিত প্রশ্ন

প্রশ্ন: আসলে এই ত্রুটির কারণ কী?
উত্তর: Node.js 17+ OpenSSL 3 ব্যবহার করে, যা লিগ্যাসি অ্যালগরিদমগুলির জন্য সমর্থন সরিয়ে দেয় (যেমন একটি পুরানো MD4-ভিত্তিক হ্যাশ) যা পুরানো ওয়েবপ্যাক সংস্করণগুলি মডিউল হ্যাশিংয়ের জন্য অভ্যন্তরীণভাবে ব্যবহৃত হয়। যখন পুরানো টুলটি সরানো অ্যালগরিদমকে কল করে, OpenSSL 3 ERR_OSSL_EVP_UNSUPPORTED থ্রো করে। এটি পুরানো টুলিং এবং নতুন OpenSSL এর মধ্যে একটি অসঙ্গতি।

প্রশ্ন: –openssl-legacy-provider পতাকা কি নিরাপদ?
উত্তর: এটি নিরাপত্তাজনিত কারণে অক্ষম করা অপ্রচলিত অ্যালগরিদমগুলিকে পুনরায় সক্ষম করে৷ এটি একটি বিল্ড আনব্লক করার জন্য একটি সূক্ষ্ম অস্থায়ী সমাধান, কিন্তু আদর্শ দীর্ঘমেয়াদী নয়। অনির্দিষ্টকালের জন্য উত্তরাধিকার পতাকার উপর নির্ভর না করে আধুনিক অ্যালগরিদম ব্যবহার করতে আপনার টুলিং (ওয়েবপ্যাক) আপডেট করা পছন্দ করুন।

প্রশ্নঃ কেন ওয়েবপ্যাক আপডেট করলে এটি ঠিক হয়?
উত্তর: নতুন ওয়েবপ্যাক (5.61+) OpenSSL 3 দ্বারা সমর্থিত হ্যাশিং অ্যালগরিদমগুলিতে স্যুইচ করেছে, তাই এটি আর সরানো উত্তরাধিকার অ্যালগরিদমকে কল করে না। বর্তমান সংস্করণগুলিতে আপনার বিল্ড টুলিং আপডেট করা সঠিক সমাধান – এগুলি আধুনিক Node.js এবং OpenSSL এর সাথে সামঞ্জস্যপূর্ণ।

প্রশ্ন: এটা ঠিক করতে আমার কি Node.js ডাউনগ্রেড করা উচিত?
উত্তর: শুধুমাত্র শেষ অবলম্বন হিসাবে আপনি যদি টুলিং আপডেট করতে না পারেন। নোড 16 (ওপেনএসএসএল 1.1) ত্রুটিটি এড়িয়ে যায় তবে এটি পুরানো এবং অসমর্থিত। আপনার টুলিং আপডেট করা এবং বর্তমান নোড সংস্করণে থাকা ভাল। ডাউনগ্রেডিং একটি অস্থায়ী সেতু, সমাধান নয়।

প্রশ্ন: আমি ওয়েবপ্যাক আপডেট করেছি কিন্তু এখনও ত্রুটি পেয়েছি। কেন?
উত্তর: আপনার বিল্ড চেইনের আরেকটি টুল লিগ্যাসি অ্যালগরিদম ব্যবহার করতে পারে (প্রতিক্রিয়া-স্ক্রিপ্ট, একটি পুরানো লোডার, ইত্যাদি)। সমস্ত বিল্ড-সম্পর্কিত নির্ভরতা আপডেট করুন, নোড_মডিউল মুছুন এবং পুনরায় ইনস্টল করুন। যদি এটি অব্যাহত থাকে, কোন নির্ভরতা আপডেট করা প্রয়োজন তা সনাক্ত করার সময় অস্থায়ীভাবে উত্তরাধিকার পতাকা ব্যবহার করুন।

উপসংহার

ERR_OSSL_EVP_UNSUPPORTED (ডিজিটাল খামের রুটিন::অসমর্থিত) ঘটে যখন পুরানো টুলিং (সাধারণত ওয়েবপ্যাক) লিগ্যাসি অ্যালগরিদমকে কল করে যা ওপেনএসএসএল 3 (নোড 17+ এ বান্ডিল) নিরাপত্তার জন্য সরানো হয়। সঠিক সমাধান হলআপনার টুলিং আপডেট করা হচ্ছে (npm install webpack@latestএবং সম্পর্কিত বিল্ড নির্ভরতা) OpenSSL 3-সামঞ্জস্যপূর্ণ অ্যালগরিদম ব্যবহার করে এমন সংস্করণগুলিতে। দ্রুত অস্থায়ী আনব্লক হিসাবে,--openssl-legacy-providerব্যবহার করুন৷ NODE_OPTIONS এর মাধ্যমে পতাকা (ক্রস-প্ল্যাটফর্ম স্ক্রিপ্টগুলির জন্য ক্রস-এনভি সহ), তবে এটিকে একটি সেতু হিসাবে বিবেচনা করুন, স্থায়ী সমাধান নয়। Node.js ডাউনগ্রেড করা কাজ করে কিন্তু আপনাকে পুরানো, অসমর্থিত সংস্করণে রাখে। আধুনিক Node.js-এর সাথে কাজ করার জন্য আপনার বিল্ড টুল আপডেট করাকে অগ্রাধিকার দিন — লিগ্যাসি ফ্ল্যাগ অবহেলিত অ্যালগরিদমগুলিকে পুনরায় সক্ষম করে এবং দীর্ঘমেয়াদীর উপর নির্ভর করা উচিত নয়।

MD Rafikul Islam

Written by

MD Rafikul Islam is a software developer and the editor of TechPulse. He writes about developer tooling, hardware, and the practical decisions that come up in day-to-day engineering work — which laptop to buy, which framework to commit to, why a build broke at 2am. He tests the tools he writes about and says plainly when something is not worth the money. Corrections and corrections requests are welcome at rony.yf25@gmail.com.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা