এনপিএম মডিউল নির্ভরতা ইনস্টল করে না


151

package.jsonআমি যে মডিউলটিকে মূল প্রকল্পে অন্তর্ভুক্ত করছি তার জন্য এটি আমার :

{
  "version": "0.0.1",
  "name": "module-name",
  "dependencies": {
    "express": "3.3.4",
    "grunt": "0.4.1",
    "grunt-contrib-compass": "0.4.0",
    "grunt-contrib-copy": "0.4.1",
    "grunt-contrib-cssmin": "0.4.1",
    "grunt-contrib-jshint": "0.6.3",
    "grunt-contrib-requirejs": "0.4.1",
    "grunt-contrib-uglify": "0.2.2",
    "grunt-contrib-watch": "0.5.1",
    "grunt-express-server": "0.4.1",
    "grunt-karma": "0.4.5",
    "grunt-regex-replace": "0.2.5",
    "request": "2.25.0"
  },
  "scripts": {
    "postinstall": "grunt install"
  }
}

একটি বিষয় লক্ষণীয় হ'ল এই মডিউলটি একটি ব্যক্তিগত রেপোতে রয়েছে এবং আমি এটি পিতামাতার package.jsonমধ্যে অন্তর্ভুক্ত করি :"module-name": "git+ssh://git@myserver:user/module-name.git"


আপনার প্যাকেজ.জসনটি দেখতে ঠিক আছে, এটি অন্তর্ভুক্ত করার জন্য আপনি যে লাইনটি ব্যবহার করছেন তা ঠিক তেমনি। আপনি কি একটি ত্রুটি বার্তা পান? গিট আপনার পথে?
পোইডা

1
আমি প্রতি প্রতি ত্রুটি পাই না, মডিউলটি ইনস্টল করে তবে আমার postinstallস্ক্রিপ্ট ব্যর্থ হয় কারণ স্থানীয় gruntপ্যাকেজগুলি এনপিএম দ্বারা ইনস্টল করা না হওয়ায় এটি পাওয়া যায় নি
আহমেদ নুমান

1
এই সমস্যাটি এখনও ২০১ 2016 সালের নভেম্বর মাসে বিদ্যমান I আমি একটি নতুন কম্পিউটারে একটি ওয়ার্কিং মডিউলটির একটি পরিষ্কার ইনস্টল করেছিলাম। @ মোহসেনের উত্তর এটি ঠিক করে দিয়েছে।
জো ল্যাপ

উত্তর:


152

দেখে মনে হচ্ছে আপনি কোনও বাগটি আঘাত করেছেন যা বেশিক্ষণ ধরে রয়েছে এবং এখনও সমাধান নেই। এনপিএম সংগ্রহস্থলে এই মামলার জন্য বেশ কয়েকটি উন্মুক্ত সমস্যা রয়েছে:

  • এনপিএম ইনস্টলটি পুনরাবৃত্তভাবে নির্ভরতাগুলি পরীক্ষা / ইনস্টল করতে হবে https://github.com/npm/npm/issues/1341 (বন্ধ)
  • স্থানীয় বেসরকারী মডিউল নির্ভরতা https://github.com/npm/npm/issues/2442 (বন্ধ)

প্রথম এক ব্যক্তির বেশ কয়েকটি কাজের ক্ষেত্রের তালিকা রয়েছে যা আপনি চেষ্টা করতে পারেন।

একটি বিকল্প সমাধান (সামান্য হ্যাকিশ) হতে পারে প্রথম স্তরের নির্ভরশীল হিসাবে স্পষ্টভাবে নির্ভরতা তালিকাভুক্ত করা। এর জন্য আপনাকে তালিকাটি বজায় রাখা প্রয়োজন তবে ব্যবহারিকভাবে এটি খুব কম সময়েই করা উচিত।


1
@ ফ্লেম2057 জেনে রাখা আপনার ভাগ্যের বাইরে না, যদিও খুব তথ্যবহুল নয়। আপনি এগিয়ে যেতে এবং একটি প্রশ্ন গঠন করতে পারেন, আশা করি সম্প্রদায়ের সমাধান করার জ্ঞান আছে। আনন্দ কর!
allprog 14

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

113

আমার খুব অনুরূপ সমস্যা ছিল, পুরো node_modulesফোল্ডারটি সরিয়ে ফেলা এবং পুনরায় ইনস্টল করা আমার পক্ষে কাজ করে। আইটি ক্রড শো থেকে এই কৌশলটি শিখলেন !

rm -rf node_modules
npm install

এটি আসলে আমার পক্ষে কাজ করেছিল। আমি মনে করি এটি সত্যিই অদ্ভুত - কী কারণে এই ভুল? নির্বিশেষে, আমি যদি ফোল্ডারটি মুছে ফেলি এবং এনপিএম ইনস্টলটি পুনরায় চালনা করি, তবে এটি কার্যকর হয়। আগে, কিছুই যে উপ-ডিরেক্টরিতে ইনস্টল করা হবে। এখন, এটি সমস্ত সেখানে ইনস্টল হয়ে যায়।
CtheGood

ধন্যবাদ @ মোশেন আমি নোডের একটি পুরানো সংস্করণ সরিয়ে নিয়েছি এবং একটি পরিষ্কার ইনস্টল করেছি। আমি আমার সমস্ত নোড_মডিউলগুলি / বিশ্বব্যাপী মুছে ফেলেছি তবে কিছু বিদ্যমান অ্যাপ্লিকেশন থেকে তা সরিয়ে দিতে ভুলে গিয়েছি। আমাকে প্রতিটি বিদ্যমান অ্যাপের ডিরেক্টরিতে নোড_মডিউলগুলি ফোল্ডারটি মুছতে হয়েছিল, তারপরে চালান npm install
wilblack

ভাল পুরানো "আপনি কি স্ক্র্যাচ পদ্ধতির থেকে পুনরায় চালু করার চেষ্টা করেছিলেন ?" এটি আমার জন্য কাজ করে মহান।
মার্কো অরেলিও ডেলিউ

যদিও এটির কার্যকারিতা রয়েছে তা জানতে পেরে এটি সত্যিই 'আপনার মেশিনটিকে রিবুট করুন এবং আবার চেষ্টা করুন' এর স্মাক করে এবং কেবল আসল সমস্যাটি লুকিয়ে রাখে। এনপিএম ইনস্টল করার ক্ষেত্রে আমার একই রকম সমস্যা রয়েছে (কোনও বার্তা ছাড়াই প্রক্রিয়াটি তাত্ক্ষণিকভাবে প্রস্থান হয়) এবং এর মধ্যে একটি হ'ল নোড_মডিউল ফোল্ডারটি মুছে ফেলা এবং পুনরায় ইনস্টল করা; যা আমার আত্মবিশ্বাসের সাথে পূর্ণ হয় না যে আমরা বুঝতে পারি যে এখানে কী চলছে।
কেলি এস ফরাসী

1
এটি আমার পক্ষে কাজ করেছে। আমি যদি আইটি ক্রড রেফারেন্সটির জন্য আবার +1 করতে পারি।
টেক্সলেট করুন

32

আমি উইন্ডোজ মেশিন ব্যবহার করছি।

  1. আমি নোড_মডিউলস ফোল্ডারটি মুছে ফেলেছি।
  2. কোনওভাবে, প্যাকেজ.লক.জসন ফাইল তৈরি হচ্ছে। আমি সেই ফাইলটি মুছলাম।
  3. তারপরে এনপিএম ইনস্টল করুন।
  4. পরিষ্কার বিল্ড।
  5. চালান।

14
এই উত্তরটির আরও বেশি ভালবাসা পাওয়া দরকার। প্যাকেজ.লক.জসন ফাইলটি আমাকে স্ক্রু করছে।
mwilcox

16

আপনি যদি এই কোডটি উত্তরাধিকার সূত্রে প্রাপ্ত হন তবে এটি হতে পারে যে নির্ভরতা এবং সংস্করণগুলি লক হয়ে গেছে এবং আপনার কাছে একটি ./npm-Srinkwrap.json ফাইল রয়েছে।

যদি আপনার নির্ভরতা সেই ফাইলটিতে তালিকাভুক্ত না হয় তবে এটি কখনই npm installকমান্ডের সাথে ইনস্টল হবে না ।

আপনাকে প্যাকেজগুলি ম্যানুয়ালি ইনস্টল করতে হবে এবং তারপরে npm shrinkwrapসঙ্কুচিত ফাইলটি আপডেট করার জন্য চালাতে হবে।


2
আমার একটি সমস্যা ছিল যেখানে ম্যানুয়ালি প্যাকেজ ইনস্টল package-lock.jsonকরে নোড 8.0.0 এবং এনএমপি 5.0.0 এ আপডেট করার পরে একটি ফাইল তৈরি করা হয়েছিল created এরপরে, দৌড়ানো npm installকেবলমাত্র আমার পরাধীনতার সমস্ত পরিবর্তে সেই প্যাকেজটি ইনস্টল করবে। মুছে ফেলা package-lock.jsonএবং পুনরায় চালানো npm installআমার জন্য সমস্যাটি সমাধান করেছে।
Monkpit

1
@ মনকপিট এটি আমার জন্যও সমাধান করেছে, ধন্যবাদ! package-lock.jsonপথে চলছিল।
ভার্চুয়ালওয়ালফ

10

আমার সন্দেহ হয় আপনি যেখানে package.jsonফাইলটি একই ডিরেক্টরিতে নেই তেমন সমস্যাটির মুখোমুখি হচ্ছেন Gruntfile.js। আপনি যখন আপনার grunt xxxকমান্ডগুলি চালাবেন , আপনি ত্রুটি একটি বার্তা পেয়ে যাবেন:

Local Npm module "xxx" not found. Is it installed?

আপাতত, সমাধানটি হ'ল:

  • Gruntfile.js হিসাবে একই ডিরেক্টরিতে প্যাকেজ.জসন তৈরি করুন
  • আপনার গুরুতর প্রকল্পের জন্য প্রয়োজনীয় মডিউলগুলি সংজ্ঞায়িত করুন
  • সম্পাদন npm installতাদের স্থানীয়ভাবে লোড করতে
  • এখন প্রয়োজনীয় গ্রান্ট কমান্ড কাজ করা উচিত।

আইএমএইচও, এটি দুঃখজনক যে আমরা পিতা বা মাতা এনএমপি মডিউল (যেমন একই প্রকল্পের মধ্যে প্যারেন্ট ডিরেক্টরিতে প্যাকেজ.জসন) থেকে লোড করা গ্রান্ট রেজোলিউশন মডিউলগুলি রাখতে পারি না। আলোচনা এখানে নির্দেশ করে এটা এড়ানোর লোড "বিশ্বব্যাপী" মডিউল করা হয়েছিল বলে মনে হয় কিন্তু আমি মনে করি লোড পরিবর্তে "আমার প্রকল্প" মডিউল থেকে কি আমরা চাই।


সুতরাং এটি আমার প্যারেন্ট প্রোজেক্টের কাঠামো ( এটিই হ'ল সাব মডিউল প্রকল্পটি আমদানি করা: cl.ly/image/020E0b3I0t1A এবং আমার সাব মডিউল প্রকল্পের কাঠামো: cl.ly/image/2q0L3l1v0s40 ; আপনি দেখতে পাচ্ছেন যে উভয়ই একই স্তরে রয়েছে Gruntfile.jsএবং এতে উভয়ই রয়েছে package.json
আহমেদ নুমান

1
এটি কোনও সমস্যা নয় grunt, এটি npmআমার সাব মডিউল প্রকল্পে পুনরাবৃত্তভাবে নির্ভরতা ইনস্টল না করার একটি সমস্যা ।
আহমেদ নুমান

9

নোডের পুরানো সংস্করণে ওপি সত্য হতে পারে। তবে আমি নোড ৪.৪.১ এর সাথে একই মুখোমুখি হয়েছি।

এটি আপনি যে নোড সংস্করণটি ব্যবহার করছেন তার সাথে এটি খুব ভাল সংযুক্ত হতে পারে। সর্বশেষতম সংস্করণে আপগ্রেড করার চেষ্টা করুন। কিছু নির্ভরতা যদি নোড সংস্করণের সাথে বেমানান হয় তবে ট্রানজিটিভলি লোড হয় না।

আমি এটি দৌড়ে খুঁজে পেয়েছি npm update

সর্বশেষ সংস্করণে আপগ্রেড করার পরে (4.4 -> 5.9); এটা ঠিক হয়ে গেছে।


8

আমার ক্ষেত্রে এটি অপসারণ করতে সহায়তা করে node_modulesএবং package-lock.json

এর পরে সবকিছু দিয়ে পুনরায় ইনস্টল করুন npm install


8

আপনার প্যাকেজের নামটি সঠিকভাবে গৃহীত হয়েছে কিনা তাও পরীক্ষা করে দেখুন:

জালেম হয়ে গেছে

{
    "name":"My Awesome Package"
}


সঠিক

{
    "name": "my-awesome-package-name"
}

1
হ্যাঁ আমার নামে একটি জায়গা ছিল এবং এটি সঠিকভাবে ইনস্টল হয়নি।
Ansjovis86

1
শুধু জায়গার জন্য নয়, এটি '-' নামেও তিনি নামটিতে ব্যবহার করেছিলেন, আমিও একই সমস্যাটির মুখোমুখি হয়েছি, নাম রেখেছি - বা _ নামে রেখেছি, এটি কার্যকর হবে।
মোলগবাল

4

আপনার গ্রাউন্ট-ক্লিপ ইনস্টল করার প্রয়োজন হতে পারে, এনপিএম ইনস্টল করার আগে এটি চেষ্টা করুন:

sudo npm install -g grunt-cli

এটি স্থির করে দেয় যে গ্রান্টটি আমার জন্য প্রস্থান করে না, আপনার একটি বৈধ গ্রুর্ট ফাইলও লাগবে।

সূত্র: https://stackoverflow.com/a/16456467/241294


আপনি যখন আপনার কমান্ড প্রম্পটে 'গ্রান্ট' কমান্ডটি ব্যবহার করবেন তখন কী হবে? এটি কি আপনার পথে আছে? আপনি ঠিক বলেছেন, এটি আপনার পেস্টবিন থেকে ইনস্টল করার মতো দেখাচ্ছে। আপনি এটি sudo এবং -g দিয়ে ইনস্টল করেছেন?
পোইডা

এটি ~ ᐅ which grunt /opt/local/bin/grunt
উদ্বেগের

এছাড়াও যখন আমি রেপো নিজেই ক্লোন করে না, বরং এনপিএমের মাধ্যমে চালিত করি npm installএবং grunt installএটি ঠিকঠাক কাজ করে। বিষয়টি হ'ল এনপিএম রেপোর package.json
নির্ভরতাগুলি

আপনি কোন ডিরেক্টরিতে প্যাকেজ নির্ভরতা খুঁজছেন? এগুলি শীর্ষ স্তরে নয় তবে এর অধীনে হওয়া উচিত: শীর্ষ স্তরের-প্যাকেজ / নোড_মডিউল / মডিউল-নাম / নোড_মডিউল। এটি ভুল ডিরেক্টরিতে কাজ করার কারণে গ্রান্ট গ্রুর্ট ফাইলটি খুঁজে পাচ্ছে না?
পোইডা

এটি কোনও সমস্যা নয় grunt, যখন আপনি এনপিএম দিয়ে মডিউলগুলি ইনস্টল করেন এটি ইতিমধ্যে ইনস্টল করা মডিউলটির কোনও নির্ভরতার শেষে একটি সংক্ষিপ্তসার সরবরাহ করে; আমি যখন প্রশ্নটিতে মডিউলটি ইনস্টল করি তখন আমি ইনস্টল হওয়া কোনও নির্ভরতা মডিউলগুলির সংক্ষিপ্তসার পাই না।
আহমেদ নুমান

4

যে কেউ যদি এই দুর্দশায় ভুগছে এবং একই অ্যাসিনাইন ভুলটি ঘটেছে যা আমি করেছিলাম, আমার ক্ষেত্রে এটিই ছিল। এক ঘন্টার জন্য প্রাচীরের বিরুদ্ধে মাথা ঠেকানোর পরে, আমি বুঝতে পেরেছিলাম যে আমার জেসনটি ভুলভাবে বাসা বেঁধেছে, এবং কী "নির্ভরতা" কী "সংগ্রহস্থল" এর অভ্যন্তরে ছিল।
বলা বাহুল্য, কোনও ত্রুটি স্পষ্ট ছিল না এবং কোনও মডিউল ইনস্টল করা হয়নি।


3

এটিকে ঘিরে কাজ করার আরেকটি উপায় হ'ল এটি আপনার মডিউল package.jsonস্ক্রিপ্ট বিভাগে যুক্ত করা

"preinstall": "npm install {Packages You depend on}"

এটি যা করবে তা হ'ল এটি মডিউলটির প্রয়োজনীয় সমস্ত প্যাকেজ ইনস্টল করবে এবং আপনি ত্রুটি পাবেন না।


3

পুরানো নোড সংস্করণ সঙ্গে ঘটে। নোডের সর্বশেষ সংস্করণটি এর মতো ব্যবহার করুন:

$ nvm use 8.0
$ rm -rf node_modules
$ npm install
$ npm i somemodule

সম্পাদনা করুন: আপনি নিশ্চিত হন save
উদাহরণ:npm install yourmoduleName --save


2

আমি উইন্ডোতে একটি পরিষ্কার নোড দেব পরিবেশ ইনস্টল করার সময় আমি এই ত্রুটিটি পেয়েছি।

এটি ঠিক করার জন্য, আমি আমার নতুন প্রকল্প ডিরেক্টরিতে গিয়েছিলাম (যা আমি কেবল ভাসিয়েছি yo angular) এবং দুটি কমান্ড টাইপ করেছি:

npm install -g grunt --save-dev

এটি আপনার প্রকল্পের স্থানীয় গ্রান্ট নির্ভরতা ইনস্টল করবে। পরবর্তী:

npm install

এটি আপনার সমস্ত (নতুন) প্রকল্প নির্ভরতা ইনস্টল করা হয়েছে তা নিশ্চিত করবে।

Tada!


2

আপনার নির্ভরতাগুলি dependenciesআপনার package.json(বিরোধী হিসাবে devDependencies) অংশে থাকা উচিত তা নিশ্চিত করার জন্য উল্লেখযোগ্য th

আমার ইস্যুটি মূলত ওপির মতোই ছিল:

  • অন্যান্য রেপোর repo1মাধ্যমে একটি প্রাইভেট রেপো ইনস্টল করা (আসুন এটি "module-name": "git+ssh://git@myserver:user/my-repo-name.git"কল করুন repo2),
  • মধ্যে repo2এর node_modulesথেকে এক প্যাকেজ নির্ভরতা repo1সেখানে ছিলাম না।
  • আমার নির্বোধ ভুল! .. পরিবর্তে repo1যে নির্ভরতা তালিকা ছিলdevDependenciesdependencies
  • আমার মধ্যে নির্ভরতা সরান repo1এর package.jsonথেকে devDependencies থেকেdependencies
  • আমার সালে repo2, আমি আমার মুছে node_modulesএবং package-lock.json, করেনি npm install, একটি ভাল খবর! ... নির্ভরতা ছিল ওখানে

আমি এনপিএম ইনস্টল কমান্ডের উপরে আমার ডকফিলিতে NODE_ENV = উত্পাদনের পরিবেশ পরিবর্তনশীল হিসাবে ঘোষণা করেছিলাম, যার ফলে ডিভিনিডেন্সিগুলি ইনস্টল করা যায় না
পিটার ডি ক্লার্কিউ

0

আমারও একই সমস্যা ছিল। তবে একই মেশিনে একটি প্রকল্পে ভাল প্যাকেজ.জসন ছিল, যেখানে আমার সমস্ত নির্ভরতা সফলভাবে ইনস্টল করা আছে। এবং অন্য প্রকল্পে আমার প্যাকেজ.জসন নির্ভরতাগুলি আমি যাই করুক না কেন ইনস্টল করা হয়নি। আমি কেবল প্যাকেজ.জসনটি অনুলিপি করেছি এবং সেই অন্য প্রকল্পে আটকালাম। এবং এটা কাজ করে! আমি যে পার্থক্যটি পেয়েছি তা ফাইলের শুরুতে খালি লাইন। জানি না বা এটি কোনও কিছুকে প্রভাবিত করে, সম্ভবত অন্য কোনও সমস্যা। তবে সমস্যাটি কেবল প্যাকেজ.জসন ফাইল ছিল।


0

আমি মনে করি যে আমিও এই সমস্যার মুখোমুখি হয়েছিলাম এবং আমি যে সর্বোত্তম সমাধানটি পেয়েছি তা হ'ল আমার কনসোলটি দেখানো এবং যে ত্রুটি নিক্ষেপ করা হচ্ছে তা বের করা। সুতরাং, আমি এটি মনোযোগ সহকারে পড়েছি এবং দেখতে পেয়েছি যে সমস্যাটি হ'ল আমি আমার রেपो, বর্ণনা এবং বৈধ নামটি আমার মধ্যে নির্দিষ্ট করে নি package.json। আমি সেই তথ্যগুলির টুকরো যুক্ত করেছি এবং সবকিছু ঠিক আছে।

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