एनपीएम मॉड्यूल निर्भरता स्थापित नहीं करता है


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"


आपका package.json ठीक दिखता है, जैसा कि आप इसे शामिल करने के लिए जिस लाइन का उपयोग करते हैं। क्या आपको एक त्रुटि संदेश मिलता है? अपने रास्ते पर है?
पोइडा

1
मुझे प्रति सॉ कोई त्रुटि नहीं मिली, मॉड्यूल इंस्टॉल हो गया लेकिन मेरी postinstallस्क्रिप्ट विफल हो गई क्योंकि स्थानीय gruntपैकेज नहीं मिल रहे हैं क्योंकि वे एनपीएम द्वारा स्थापित नहीं हैं
अहमद नुमान

1
यह समस्या अभी भी नवंबर 2016 में मौजूद है। मैंने एक नए कंप्यूटर पर काम कर रहे मॉड्यूल की एक साफ स्थापना की थी। @ मोहसिन के जवाब ने इसे ठीक कर दिया।
जो लैप

जवाबों:


152

ऐसा लगता है कि आपने एक बग मारा है जो काफी समय से अस्तित्व में है और अभी तक समाधान नहीं हुआ है। इस मामले के लिए npm भंडार में कई खुले मुद्दे हैं:

पहले एक व्यक्ति में कई वर्कअराउंड को सूचीबद्ध किया जाता है जिसे आप आजमा सकते हैं।

एक वैकल्पिक समाधान पहले स्तर के आश्रितों के रूप में निर्भरता को स्पष्ट रूप से सूचीबद्ध करने के लिए (थोड़ा हैकिश) हो सकता है। इसके लिए आपको सूची को बनाए रखने की आवश्यकता होती है, लेकिन व्यावहारिक रूप से इसे बहुत बार किया जाना चाहिए।


1
@ Flame2057 यह जानना अच्छा है कि आप भाग्य से बाहर हैं, हालांकि बहुत अधिक जानकारीपूर्ण नहीं है। आप आगे बढ़ सकते हैं और एक प्रश्न तैयार कर सकते हैं, उम्मीद है कि समुदाय को हल करने के लिए ज्ञान है। मज़े करो!
allprog

मेरे लिए एक अतिरिक्त कदम की जरूरत थी। मुझे अपनी परियोजना में "निर्भरता" पर राइट-क्लिक करना था और यहां बताए गए अन्य चरणों को करने के बाद "पुनर्स्थापना पैकेज" चुनें (नोड_मॉड्यूल्स और पैकेज.लॉक.जॉसन, फिर एनपीएम इंस्टॉल करें)।
टेरसियस

113

मेरे पास बहुत ही समान मुद्दा था, पूरे node_modulesफ़ोल्डर को हटाने और मेरे लिए फिर से स्थापित करने का काम किया। IT क्राउड शो से सीखे यह ट्रिक !

rm -rf node_modules
npm install

यह वास्तव में मेरे लिए काम किया। मुझे लगता है कि यह वास्तव में अजीब है - उस गड़बड़ का कारण क्या है? बावजूद, अगर मैं फ़ोल्डर को हटाता हूं और एनपीएम इंस्टॉल को फिर से चलाता हूं, तो यह काम करता है। पहले से, उस उपनिर्देशिका में कुछ भी स्थापित नहीं होगा। अब, यह सब वहाँ स्थापित हो जाता है।
CtheGood

धन्यवाद @ मोशेन मैंने नोड का एक पुराना संस्करण हटा दिया था और एक क्लीन इंस्टाल किया था। मैंने अपने सभी नोड_मॉड्यूल्स / विश्व स्तर पर हटा दिए, लेकिन कुछ मौजूदा ऐप्स से हटाना भूल गया। मुझे प्रत्येक मौजूदा ऐप की डायरेक्टरी में नोड_मॉडल्स फ़ोल्डर को हटाना था, फिर चलाएं npm install
विलेबलैक

अच्छा पुराना "क्या आपने स्क्रैच एप्रोच से पुनः आरंभ करने का प्रयास किया है ?"। यह मेरे लिए बहुत अच्छा काम किया।
बजे मार्को औरेलियो डेलेयू

हालांकि यह जानना अच्छा है कि वर्कअराउंड है, यह वास्तव में 'आपके मशीन को रिबूट और फिर से कोशिश करता है' की स्मैक है और असली समस्या को छिपाता है। मुझे एनपीएम इंस्टॉल के साथ एक समान समस्या है (प्रक्रिया बिना किसी संदेश के तुरंत बाहर निकलती है) और वर्कअराउंड में से एक नोड_मॉड्यूल फ़ोल्डर को हटाने और पुनर्स्थापित करने के लिए है; जो मुझे आत्मविश्वास से नहीं भरता है कि हम समझते हैं कि यहां क्या चल रहा है।
केली एस। फ्रेंच

1
इसने मेरे लिए काम किया। मैं आईटी भीड़ के संदर्भ के लिए मैं फिर से +1 कर सकता हूं।
टेक्सास

32

मैं विंडोज़ मशीन का उपयोग कर रहा हूँ।

  1. मैंने नोड_मॉडल फ़ोल्डर हटा दिया है।
  2. किसी तरह, package.lock.json फ़ाइल बन रही है। मैंने वो फाइल डिलीट कर दी।
  3. फिर npm स्थापित करें।
  4. साफ निर्माण।
  5. Daud।

14
इस जवाब को और अधिक प्यार पाने की जरूरत है। Package.lock.json फ़ाइल मुझे खराब कर रही थी।
mwilcox

16

यदि आपको यह कोड विरासत में मिला है, तो यह हो सकता है कि निर्भरताएं और संस्करण लॉक हो गए हों और आपके पास ./npm-shrinkwrap.json फ़ाइल हो।

यदि आपकी निर्भरता उस फ़ाइल में सूचीबद्ध नहीं है, तो यह कभी भी npm installकमांड के साथ संस्थापित नहीं होगी ।

आपको संकुल को मैन्युअल रूप से संस्थापित करने और फिर npm shrinkwrapसिकुड़ने की फाइल को अद्यतन करने के लिए चलाने की आवश्यकता होगी ।


2
मेरे पास एक मुद्दा था जहां मैन्युअल रूप से एक पैकेज स्थापित package-lock.jsonकरने से नोड 8.0.0 और एनपीएम 5.0.0 को अपडेट करने के बाद एक फ़ाइल बनाई गई थी । उसके बाद, रनिंग npm installकेवल मेरी निर्भरता के बजाय केवल एक पैकेज स्थापित करेगा। हटाने package-lock.jsonऔर फिर से चलने से npm installमेरे लिए समस्या हल हो गई।
भिक्षु

1
@Monkpit कि यह मेरे लिए भी हल, धन्यवाद! package-lock.jsonरास्ते में मिल रहा था।
वर्चुअलवॉल्फ

10

मुझे संदेह है कि आप उस समस्या का सामना कर रहे हैं जहाँ आपकी package.jsonफ़ाइल आपकी जैसी निर्देशिका में नहीं है Gruntfile.js। जब आप अपने grunt xxxआदेश चलाते हैं , तो आपको त्रुटि संदेश मिलता है जैसे:

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

अभी के लिए, समाधान है:

  • Gruntfile.js के समान निर्देशिका में package.json बनाएँ
  • अपनी ग्रन्ट परियोजना द्वारा आवश्यक मॉड्यूल को परिभाषित करें
  • npm installउन्हें स्थानीय स्तर पर लोड करने के लिए निष्पादित करें
  • अब आवश्यक ग्रंट कमांड को काम करना चाहिए।

IMHO, यह दुख की बात है कि हमारे पास मूल एनपीएम मॉड्यूल (यानी एक ही परियोजना के भीतर एक मूल निर्देशिका में package.json) से लोड ग्रंट रिज़ॉल्यूशन मॉड्यूल नहीं हो सकते हैं। चर्चा यहाँ से संकेत मिलता है कि यह से बचने के लोड हो रहा है "वैश्विक" मॉड्यूल के लिए किया गया था लगता है, लेकिन मुझे लगता है कि लोड हो रहा है बजाय "मेरी परियोजना" मॉड्यूल से है कि हम क्या चाहते हैं।


तो यह मेरी मूल परियोजना की संरचना है (यह उप मॉड्यूल परियोजना को आयात करने वाला है): cl.ly/image/020E0b3I0t1A और मेरे उप मॉड्यूल परियोजना की संरचना: cl.ly/image/2q03l1v0s40 ; आप देख सकते हैं कि दोनों सम्‍मिलित हैं Gruntfile.jsऔर दोनों में package.jsonसमान स्‍तर पर समाहित है।
अहमद नुमान

1
यह एक मुद्दा नहीं है grunt, यह npmमेरे उप मॉड्यूल परियोजना में निर्भरता को फिर से स्थापित नहीं करने के साथ एक मुद्दा है ।
अहमद नुमान

9

ओपी नोड के पुराने संस्करण के लिए सही हो सकता है। हालांकि, मुझे नोड 4.4.1 के साथ भी सामना करना पड़ा।

यह बहुत अच्छी तरह से नोड संस्करण से जुड़ा हो सकता है जिसका आप उपयोग कर रहे हैं। एक नवीनतम संस्करण में अपग्रेड करने का प्रयास करें। यदि वे नोड संस्करण के साथ असंगत हैं, तो कुछ निर्भरताएं पारगमन को लोड नहीं करती हैं।

मैंने दौड़कर यह पाया 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

आपको npm स्थापित करने से पहले, ग्रंट-क्ली को स्थापित करने की आवश्यकता हो सकती है:

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

यह सुनिश्चित करेगा कि आपकी सभी (नई) परियोजना निर्भरताएं स्थापित हों।

टाडा!


2

यह सुनिश्चित करने के लिए उल्लेख करना सुनिश्चित करें कि आपकी निर्भरता dependenciesआपके package.json(या विरोध के रूप में devDependencies) के हिस्से में होनी चाहिए ।

मेरा मुद्दा मूल रूप से ओपी के समान था:

  • अन्य रेपो (चलो इसे कॉल करें 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, एक आवाज़! ... निर्भरता थी!

मैंने अपने Dockerfile में npmE_ENV = उत्पादन वातावरण चर को npm इंस्टाल कमांड के ऊपर घोषित किया था, जिसके कारण निर्भरताएँ स्थापित नहीं हो पातीं
Pieter De Clercq

0

मुझे भी यही समस्या थी। लेकिन एक ही मशीन पर एक परियोजना में अच्छा पैकेज था। आगजनी, जहां मेरी सभी निर्भरताएं सफलतापूर्वक स्थापित की जाती हैं। और एक अन्य परियोजना में मेरे पैकेज.जसन निर्भरताएं स्थापित नहीं की गईं, चाहे मैं कुछ भी करूं। मैंने अभी पैकेज की कॉपी की है। Json और उस दूसरी परियोजना में चिपकाया गया। और यह काम किया! मैंने जो अंतर पाया है, वह फ़ाइल की शुरुआत में केवल खाली लाइन थी। पता है या यह कुछ भी प्रभावित करता है, शायद कुछ अन्य समस्या। लेकिन समस्या केवल package.json फ़ाइल की थी।


0

मुझे लगता है कि मुझे भी इस समस्या का सामना करना पड़ा, और मुझे जो सबसे अच्छा समाधान मिला वह था अपने कंसोल को देखना और उस त्रुटि का पता लगाना जो फेंकी जा रही थी। इसलिए, मैंने इसे ध्यान से पढ़ा और पाया कि समस्या यह थी कि मैंने अपने रेपो, विवरण और अपने में मान्य नाम को निर्दिष्ट नहीं किया था package.json। मैंने जानकारी के उन टुकड़ों को जोड़ा और सब कुछ ठीक था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.