npm ईआरआर में npm विंडोज विश्व स्तर पर परिणाम स्थापित करता है! बाहरी


121

मैं ग्रन्ट और एनपीएम के लिए नया हूं। इसलिए मैं ' http://tech.pro/tutorial/1190/package-managers-an-introductory-guide-for-the-uninitiated-front-end-developerfront_end_developers ' साइट पर कुछ "कुकबुक-उदाहरण" आज़मा रहा हूं । । आपको अब वहां नहीं देखना चाहिए, लेकिन मुझे लगा कि साइट को साझा करना अच्छा हो सकता है। अब तक बहुत अच्छा है, यह वैश्विक स्थापना के लिए आता है। (ठीक है, कुछ त्रुटियां मुझे समझनी थीं, लेकिन अब मेरे पास काम करने वाली एनपीएम है)।

जब बात विश्व स्तर पर कुछ स्थापित करने की कोशिश की आती है तो मैं फंस जाता हूं।

मैंने कुछ पैकेज स्थापित करने के लिए विश्व स्तर पर परीक्षण के लिए अब तक क्या किया:

  1. परीक्षण-निर्देशिका बनाई गई grunttest

  2. उस निर्देशिका के अंदर:

    npm install -g jshint

आउटपुट मैं देख सकता हूं:

 npm http GET https://registry.npmjs.org/jshint
 npm http 304 https://registry.npmjs.org/jshint
 ...
 npm http 304 https://registry.npmjs.org/string_decoder
 C:\Program Files\nodejs\node_modules\npm\jshint -> C:\Program Files\nodejs\node_modules\npm\node_modules\jshinnt
 jshint@2.4.4 C:\Program Files\nodejs\node_modules\npm\node_modules\jshint
 ├── console-browserify@0.1.6
 ├── exit@0.1.2
 ├── underscore@1.4.4
 ├── shelljs@0.1.4
 ├── minimatch@0.2.14 (sigmund@1.0.0, lru-cache@2.5.0)
 ├── cli@0.4.5 (glob@3.2.9)
 └── htmlparser2@3.3.0 (domelementtype@1.1.1, domutils@1.1.6, domhandler@2.1.0, readable-stream@1.0.26-2)

मैं सिर्फ 304 का एहसास करता हूं, जो ठीक होना चाहिए, सिर्फ यह कहने के कारण कि संसाधन पिछली स्थापना (कुछ मिनट पहले) से संशोधित नहीं किया गया था।

जाँच करें कि क्या jshint मौजूद है:

`npm -global list`

आउटपुट:

npm@1.4.3 C:\Program Files\nodejs\node_modules\npm
├── abbrev@1.0.4
├── ansi@0.2.1
├─...
├──
├── graceful-fs@2.0.2
├── inherits@2.0.1
├── ini@1.1.0
├─┬ init-package-json@0.0.14
│ └── promzard@0.2.1
├─┬ jshint@2.4.4 extraneous
│ ├─┬ cli@0.4.5
│ │ └─┬ glob@3.2.9
│ │   └── inherits@2.0.1
│ ├── console-browserify@0.1.6
│ ├── exit@0.1.2
│ ├─┬ htmlparser2@3.3.0
│ │ ├── domelementtype@1.1.1
│ │ ├── domhandler@2.1.0
│ │ ├── domutils@1.1.6
│ │ └─┬ readable-stream@1.0.26-2
│ │   └─... ├── text-table@0.2.0
├── uid-number@0.0.3
└── which@1.0.5

**npm ERR! extraneous: jshint@2.4.4 C:\Program Files\nodejs\node_modules\npm\node_modules\jshint npm**

प्रशन:

  1. मुझे npm ईआरआर क्यों मिलता है! विलुप्त ...?
  2. इसका क्या मतलब है?
  3. मेरे द्वारा इस समस्या का समाधान कैसे किया जा सकता है?

जानकारी:

मैं एक विंडोज़-मशीन विंडोज 7 पर हूं, शेल के रूप में साइबरविन का उपयोग कर रहा हूं। सिर्फ jshint ( jshint someTestfile.js) के लिए काम करने की कोशिश नहीं करता है।

अग्रिम धन्यवाद, मेरु

जवाबों:


208

npm ERR! extraneousइसका मतलब यह है कि एक पैकेज स्थापित है लेकिन आपकी परियोजना में सूचीबद्ध नहीं है package.json

जब से आप उन पैकेजों को सूचीबद्ध कर रहे हैं जो विश्व स्तर पर स्थापित किए गए हैं, तो यह आपको बहुत अधिक बाहरी त्रुटियों को देने जा रहा है, जिसे केवल इसलिए अनदेखा किया जा सकता है क्योंकि विश्व स्तर पर स्थापित अधिकांश चीजें आपकी परियोजना में नहीं होंगी package.json


1
नमस्ते! जवाब के लिए धन्यवाद। क्या इसका मतलब यह भी है, कि मुझे "jshint" को सही ढंग से निष्पादित करने में सक्षम होना चाहिए, सही?
मेरु

सही बात। दौड़ना jshint myfile.jsचाहिए पर जिशंट चलाना चाहिए myfile.js
काइल रॉबिन्सन यंग

1
ओह समझा। ग्रंट के साथ, सब कुछ कार्यों के माध्यम से जाता है। आप grunt-contrib-jshintअपने कार्य को लोड और कॉन्फ़िगर करेंगे Gruntfile.js। केवल एक चीज जिसे आप विश्व स्तर पर स्थापित करते हैं, npm i grunt-cli -gजो आपको चलाने के लिए gruntकमांड चलाने के लिए एक्सेस देता है Gruntfile.js। अधिक जानकारी के लिए इस गाइड को देखें: gruntjs.com/getting-started
काइल रॉबिन्सन यंग

8
यदि आपके पास स्थानीय रूप से (विश्व स्तर पर नहीं) बची हुई लाइब्रेरियाँ हैं, तो आप npm pruneउनसे छुटकारा पाने के लिए दौड़ सकते हैं।
क्रक्स

2
@KyleRobinsonYoung: उत्तर में इसका उल्लेख कैसे करें। आप सभी अप्रयुक्त पैकेज का उपयोग करके निकाल सकते हैंnpm prune --your-env
geek_guy

21

1 और 2: इसका मतलब है कि आपके पास अपनी परियोजना के पैकेज में सूचीबद्ध jshint नहीं है। फ़ाइल को जमा करें लेकिन यह विश्व स्तर पर स्थापित है। तो यह कोई बड़ी समस्या नहीं है।

3: इस बाहरी त्रुटि से बचने के लिए , आप विकल्प के साथ इंस्टॉल को चला या फिर से चला सकते हैं --save। यह आपको स्वचालित रूप से अद्यतन करेगा। पैकेज फ़ाइल:

npm install -g jshint --save

या मैन्युअल रूप से अपने package.json फ़ाइल को a के साथ अपडेट करने की आवश्यकता है "dependencies": {...}


मा मामलों में कोई वैश्विक डुप्लिकेट के साथ केवल स्थानीय के साथ काम करता है
BG BRUNO

2
--saveसाथ काम नहीं करता है -g। वैश्विक पैकेज सूची में package.json नहीं है।
गुइडो बोमन

5

मैंने इसका समाधान npm updateमाता-पिता के पैकेज के फ़ोल्डर में किया, जिसने सूची में से कुछ बाहरी पैकेज हटा दिए और फिर npm uninstall <package>शेष कुछ के लिए किया।

काम करने लगता है, क्योंकि मुझे ऐसा करने के बाद कोई त्रुटि नहीं मिल रही है।


3

मैंने सभी उत्तरों को मिलाकर इसे हल किया। सबसे पहले मैंने विश्व स्तर पर पैकेज स्थापित किया।

npm install -g packagename --save

चूंकि npm ने इस पैक को विश्व स्तर पर स्थापित किया था, लेकिन इसे मेरे स्थानीय पैकेज में शामिल नहीं किया था। फ़ाइल के लिए, मुझे इसके बारे में कुछ करना था।

मैं चुनता हूं, स्थानीय को हटाने के लिए समाधान और फिर इसे विश्व स्तर पर स्थापित करें।

npm uninstall packagename
npm install -g packagename

इस तरह से मेरे पास और कोई चेतावनी नहीं है और पैकेज.जॉन फ़ाइल को गड़बड़ न करें।


प्लस 100. मुझे स्थानीय रूप से स्थापना रद्द करना और विश्व स्तर पर स्थापित करना था।
कोलिन पीटर्स

1

मेरा मामला है, मैं इस 'npm ERR देखा था! जब मैंने 'npm ls' किया, तो मेरे साइबरविन टर्मिनल में एक्स्ट्रासियस 'संदेश। मैंने सोचा था कि यह बहुत सारे विश्व स्तर पर दूषित सेटअप होने के बाद किसी तरह की छेड़छाड़ के बाद हुआ था। मैं यहां निम्नलिखित टिप्पणियों को सीखता हूं:

  • 'npm ls' आपके वर्तमान फ़ोल्डर स्थान के आधार पर अलग-अलग आउटपुट देता है।
  • 'npm ls' वर्तमान फ़ोल्डर स्थान में 'नोड_मॉड्यूल' फ़ोल्डर की उपस्थिति का पता लगाने की कोशिश करता है और उन सामग्रियों को सूचीबद्ध करता है। वैश्विक वाले नहीं!
  • इसके अलावा, अगर 'नोड_मॉड्यूल्स' वाले मौजूदा फ़ोल्डर में भी पैकेज.जॉन फ़ाइल है जिसमें कम मॉड्यूल यहां सूचीबद्ध हैं, तो त्रुटि दिखाई देती है।

मैं 'rm package.json' और 'npm ls' अब त्रुटि संदेश नहीं दिखाता। इसलिए मैं कहता हूं, कि हमेशा 'node_modules' फोल्डर और पैकेज.जॉन फ़ाइल की उपस्थिति के लिए वर्तमान स्थान की जांच करें क्योंकि ये पहले चेक में प्राथमिकता देते हैं और यदि ये गायब हैं, तो चेक मूल फ़ोल्डर और इतने पर जारी रहता है। और यदि आपने बहुत सारे कोड स्निपेट को टेंक किया है, तो आप बहुत सारे और बहुत सारे नोड_मॉडल फ़ोल्डर और पैकेज.जसन फ़ाइल के आसपास बिखरे हुए हो सकते हैं। वास्तव में यहाँ कुछ भी भ्रष्ट नहीं है, उन अनुभवों के विपरीत जो हमें J2EE जावा विकास / ग्रहण आईडीई करते समय या उन दिनों के दौरान होते हैं जब हमें विंडोज में सेटिंग्स बदलने के लिए regedit का उपयोग करना पड़ता है।


1

मेरे मामले में ऐसा इसलिए था क्योंकि इसकी package.jsonफ़ाइल में पैकेज का नाम package.jsonआश्रित मॉड्यूल में सूचीबद्ध चित्रण नाम के समान नहीं था । मेरी त्रुटि, चूंकि यह एक नया मॉड्यूल है जिसे मैंने बनाया है, लेकिन स्पॉट करना मुश्किल है, क्योंकि एनपीएम कोई सुराग नहीं देगा।

dependencies: { "my-module": "file:local-modules/mymodule" }"माय-मॉड्यूल" नाम के टाइपो के साथ सिंटैक्स का उपयोग करते समय ऐसा हुआ ।


0

यह इस तथ्य के कारण है कि आपका पैकेज आपके पैकेज में नहीं है। जेसन। यदि आप इसे जोड़ते हैं, तो समस्या हल हो जाएगी, कृपया नीचे दी गई छवि देखें:

यहाँ छवि विवरण दर्ज करें

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