npm ERR! নির্ভরতা বৃক্ষ সমাধান করতে অক্ষম ERESOLVE ত্রুটি মানে npm আপনার প্রকল্পে প্যাকেজগুলির মধ্যে বিরোধপূর্ণ সহকর্মী নির্ভরতা প্রয়োজনীয়তা খুঁজে পেয়েছে। npm 7+ পিয়ার ডিপেন্ডেন্সি রেজোলিউশনকে আরও কঠোর করেছে — প্যাকেজগুলি যেগুলি npm 6-এ একে অপরের পাশাপাশি ইনস্টল করা এখন ব্যর্থ। এখানে প্রতিটি ফিক্স ব্যাখ্যা করা হয়েছে.ত্রুটি বোঝা
📋 Table of Contents
- এই ত্রুটি পড়া:
- এটি npm কে v6 আচরণে ফিরিয়ে আনে — পিয়ার নির্ভরতা দ্বন্দ্ব প্রয়োগ না করে প্যাকেজ ইনস্টল করে। প্যাকেজটি নতুন পিয়ার সংস্করণের সাথে ভাল কাজ করতে পারে যদিও এটি একটি পুরানো পরিসর ঘোষণা করে।
- এটা কি করে:
- এটি সঠিক সমাধান
- ক্ষেত্র npm-কে একটি নেস্টেড নির্ভরতার একটি নির্দিষ্ট সংস্করণ জোর করতে বলে। এটি সবচেয়ে সঠিক সমাধান — আপনি স্পষ্টভাবে বলছেন যে "এই প্যাকেজের জন্যও প্রতিক্রিয়া 18 ব্যবহার করুন" নীরবে বিরোধ উপেক্ষা করার পরিবর্তে।
- 2+ বছর আগে প্রকাশিত একটি প্যাকেজ রিঅ্যাক্ট 18 সামঞ্জস্যের বিষয়ে খোলা সমস্যাগুলি সহ সম্ভবত পরিত্যক্ত। সক্রিয় রক্ষণাবেক্ষণ সহ আধুনিক বিকল্পগুলির জন্য npm অনুসন্ধান করুন।
- প্রায়শই জিজ্ঞাসিত প্রশ্ন
- প্রশ্নঃ –লেগেসি-পিয়ার-ডেপস কি নিরাপদ?
- উত্তর: সাধারণত হ্যাঁ, বিশেষ করে যখন দ্বন্দ্ব হয় পিয়ার সংস্করণের রেঞ্জগুলি রক্ষণশীল হওয়া নিয়ে (যেমন, পিয়ার বলে React 16-17 কিন্তু 18 এর সাথে ভাল কাজ করে)। সর্বদা এটি ব্যবহারের পরে পরীক্ষা করুন। ঝুঁকি হল সূক্ষ্ম রানটাইম অসঙ্গতি যা শুধুমাত্র প্রান্তের ক্ষেত্রেই দেখা যায়।
- (1) আপনার ফ্রেমওয়ার্ক সংস্করণকে সমর্থন করে এমন একটি সংস্করণে বিরোধপূর্ণ প্যাকেজ আপগ্রেড করা, (2)
এই ত্রুটি পড়া:
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: my-app@1.0.0
npm ERR! Found: react@18.3.1
npm ERR! node_modules/react
npm ERR! react@"^18.0.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^16.8.0 || ^17.0.0" from some-old-package@2.1.0
npm ERR! node_modules/some-old-package
আপনার প্রজেক্ট রিঅ্যাক্ট 18 ব্যবহার করে। একটি পিয়ার নির্ভরতা হিসাবে প্রতিক্রিয়া 16 বা 17 প্রয়োজন। npm ইনস্টল করতে অস্বীকার করে কারণ এটি এটিকে একটি দ্বন্দ্ব হিসাবে দেখে।some-old-packageঠিক 1: –legacy-peer-deps (নিরাপদ দ্রুত সমাধান)
এটি npm কে v6 আচরণে ফিরিয়ে আনে — পিয়ার নির্ভরতা দ্বন্দ্ব প্রয়োগ না করে প্যাকেজ ইনস্টল করে। প্যাকেজটি নতুন পিয়ার সংস্করণের সাথে ভাল কাজ করতে পারে যদিও এটি একটি পুরানো পরিসর ঘোষণা করে।
npm install --legacy-peer-deps
কখন ব্যবহার করবেন:
আপনি যখন সংমিশ্রণের কাজগুলি পরীক্ষা করেছেন, তখন নতুন প্রতিক্রিয়া/ভিউ/কৌণিক পিয়ার সংস্করণ ঘোষণা করার জন্য প্যাকেজটি আপডেট করা হয়নি এবং আপনি বিশ্বাস করেন যে নির্ভরতা আসলে ভেঙে যাবে না।ভবিষ্যতের সমস্ত ইনস্টলেশনের জন্য স্থির থাকুন:
ফিক্স 2: –ফোর্স (শেষ রিসোর্ট)
# .npmrc file (commit this to repo)
legacy-peer-deps=true
এটা কি করে:
npm install --force
বিরোধপূর্ণ সংস্করণের সাথেও ইনস্টলেশন জোর করে, সম্ভাব্য একই প্যাকেজের একাধিক সংস্করণ ইনস্টল করে। এর চেয়ে বেশি আক্রমনাত্মককখন ব্যবহার করবেন:--legacy-peer-deps.
শুধুমাত্র যখন কাজ করে না এবং আপনি যাচাই করেছেন যে সমন্বয় নিরাপদ। --legacy-peer-deps অমিল সংস্করণ থেকে সূক্ষ্ম রানটাইম বাগ তৈরি করতে পারে।--forceফিক্স 3: দ্বন্দ্বপূর্ণ প্যাকেজ আপগ্রেড করুন
এটি সঠিক সমাধান
# Check if a newer version supports your React/Node version
npm info some-old-package peerDependencies
# Try installing a specific version
npm install some-old-package@latest
# Or check if there's an RC/beta with support
npm install some-old-package@next
যখন প্যাকেজ আপডেট করা হয়েছে। Legacy-peer-deps-এ পৌঁছানোর আগে সর্বদা একটি নতুন সংস্করণ পরীক্ষা করুন।ফিক্স 4: ক্ষেত্রকে ওভাররাইড করে (npm 8.3+, সবচেয়ে সঠিক পদ্ধতি)
ক্ষেত্র npm-কে একটি নেস্টেড নির্ভরতার একটি নির্দিষ্ট সংস্করণ জোর করতে বলে। এটি সবচেয়ে সঠিক সমাধান — আপনি স্পষ্টভাবে বলছেন যে “এই প্যাকেজের জন্যও প্রতিক্রিয়া 18 ব্যবহার করুন” নীরবে বিরোধ উপেক্ষা করার পরিবর্তে।
// package.json
{
"dependencies": {
"some-old-package": "2.1.0",
"react": "^18.0.0"
},
"overrides": {
"some-old-package": {
"react": "^18.0.0"
}
}
}
সুতার জন্য (রেজোলিউশন ক্ষেত্র):overridesফিক্স 5: একটি বিকল্প প্যাকেজ খুঁজুন
যদি একটি প্যাকেজ রক্ষণাবেক্ষণ না করা হয় এবং বর্তমান সমকক্ষ সংস্করণগুলিকে সমর্থন না করে, তবে এটি প্রায়শই একটি ভাল রক্ষণাবেক্ষণ করা বিকল্প খুঁজে পাওয়ার লক্ষণ:
// package.json
{
"resolutions": {
"some-old-package/react": "^18.0.0"
}
}
2+ বছর আগে প্রকাশিত একটি প্যাকেজ রিঅ্যাক্ট 18 সামঞ্জস্যের বিষয়ে খোলা সমস্যাগুলি সহ সম্ভবত পরিত্যক্ত। সক্রিয় রক্ষণাবেক্ষণ সহ আধুনিক বিকল্পগুলির জন্য npm অনুসন্ধান করুন।
সিদ্ধান্ত বৃক্ষ
# Check last publish date
npm info some-old-package
# Check GitHub for issues/PRs about the newer React version
# Look for: forks, alternatives, or community maintained versions
সাধারণ পরিস্থিতি এবং সমাধান
প্রায়শই জিজ্ঞাসিত প্রশ্ন
ERESOLVE error
↓
Is there a newer version of the conflicting package?
YES → npm install package@latest
NO ↓
Does the package actually work with your version (test it)?
YES → Use --legacy-peer-deps or overrides in package.json
NO ↓
Is there an actively maintained alternative?
YES → Switch packages
NO → Use --legacy-peer-deps and monitor for issues
প্রশ্নঃ –লেগেসি-পিয়ার-ডেপস কি নিরাপদ?
# Scenario: Create React App with React 18
npx create-react-app my-app # old CRA doesn't support React 18
# Fix: Use Vite instead
npm create vite@latest my-app -- --template react-ts
# Scenario: Storybook + React 18
npx sb init # older Storybook versions conflict
# Fix: Use current Storybook
npx storybook@latest init
# Scenario: Old Redux package conflicts
# Fix: upgrade to Redux Toolkit (official recommendation)
npm install @reduxjs/toolkit react-redux
# Scenario: Next.js conflicting peer deps
# Fix: usually just --legacy-peer-deps works; Next.js team is aware
উত্তর: সাধারণত হ্যাঁ, বিশেষ করে যখন দ্বন্দ্ব হয় পিয়ার সংস্করণের রেঞ্জগুলি রক্ষণশীল হওয়া নিয়ে (যেমন, পিয়ার বলে React 16-17 কিন্তু 18 এর সাথে ভাল কাজ করে)। সর্বদা এটি ব্যবহারের পরে পরীক্ষা করুন। ঝুঁকি হল সূক্ষ্ম রানটাইম অসঙ্গতি যা শুধুমাত্র প্রান্তের ক্ষেত্রেই দেখা যায়।
প্রশ্ন: কেন এনপিএম পিয়ার নির্ভরতা আচরণ পরিবর্তন করেছে?
উত্তর: npm 7+ নীরব সংস্করণের দ্বন্দ্ব প্রতিরোধ করার জন্য পিয়ার নির্ভরতা রেজোলিউশনকে কঠোর করেছে যা হার্ড-টু-ডিবাগ রানটাইম ত্রুটির সৃষ্টি করে। এটি আরও সঠিক আচরণ — ট্রেডঅফ আরও স্পষ্ট রেজোলিউশন প্রয়োজন।
প্রশ্ন: আমার কি npm ওভাররাইড বা –legacy-peer-deps ব্যবহার করা উচিত?
package.json-এ আরও স্পষ্ট এবং সিদ্ধান্তটি নথিভুক্ত করে।
দ্রুত কিন্তু অন্তর্নিহিত। উৎপাদন প্রকল্পের জন্য, পছন্দ করুন
A: overrides তাই ওভাররাইড কোড পর্যালোচনায় দৃশ্যমান।--legacy-peer-depsপ্রশ্ন: Node.js আপগ্রেড করার পরে এই ত্রুটিটি দেখা দিয়েছে – এটি কি সম্পর্কিত?overridesউত্তর: Node.js আপগ্রেডগুলি প্রায়ই কঠোর পিয়ার ডিপ রেজোলিউশন সহ নতুন npm সংস্করণ নিয়ে আসে। নোড ডাউনগ্রেড করা সমাধান নয় – ব্যবহার করুন
এবং নতুন নোড/এনপিএম-এর সাথে সামঞ্জস্যপূর্ণ সংস্করণগুলিতে আপনার নির্ভরতা আপডেট করুন।
প্রশ্ন: নতুন প্রকল্পে আমি কীভাবে এটি প্রতিরোধ করব?overrides or --legacy-peer-depsউত্তর: আধুনিক টুলিং দিয়ে শুরু করুন (Vite, Next.js 14+, সর্বশেষ CRA বিকল্প) যার আপ-টু-ডেট পিয়ার ঘোষণা রয়েছে। দুর্বল রক্ষণাবেক্ষণের ইতিহাস সহ প্যাকেজগুলি এড়িয়ে চলুন। ব্যবহার করুন
বর্তমান থাকার জন্য ত্রৈমাসিক।
উপসংহারnpm outdatednpm ERESOLVE ত্রুটিগুলি সাধারণত এর দ্বারা সমাধান করা হয়:
(1) আপনার ফ্রেমওয়ার্ক সংস্করণকে সমর্থন করে এমন একটি সংস্করণে বিরোধপূর্ণ প্যাকেজ আপগ্রেড করা, (2)
ব্যবহার করে৷ একটি নথিভুক্ত সংশোধনের জন্য package.json-এ বা (3) দ্রুত অস্থায়ী সমাধান হিসাবেoverrides. এড়িয়ে চলুন--legacy-peer-deps অন্য কিছু কাজ না করলে – এটি রানটাইম সংস্করণ দ্বন্দ্ব তৈরি করতে পারে। সর্বোত্তম দীর্ঘমেয়াদী সমাধান হল নির্ভরতা আপডেট করা যাতে সংস্করণের দ্বন্দ্ব জমে না। অন্য কিছু কাজ না করলে – এটি রানটাইম সংস্করণ দ্বন্দ্ব তৈরি করতে পারে। সর্বোত্তম দীর্ঘমেয়াদী সমাধান হল নির্ভরতা আপডেট করা যাতে সংস্করণের দ্বন্দ্ব জমে না।--force অন্য কিছু কাজ না করলে – এটি রানটাইম সংস্করণ দ্বন্দ্ব তৈরি করতে পারে। সর্বোত্তম দীর্ঘমেয়াদী সমাধান হল নির্ভরতা আপডেট করা যাতে সংস্করণের দ্বন্দ্ব জমে না।
🔗 Share this article
✍️ Leave a Comment