मैं अपने पैकेज- lock.json में एक असुरक्षित npm पैकेज को कैसे ठीक करूँ जो कि package.json में सूचीबद्ध नहीं है?


92

गितुब मुझे बता रहा है कि मेरे पैकेज-लॉक.जसन फ़ाइल में एक निर्भरता कमजोर और पुरानी है। समस्या यह है कि अगर मैं करता हूं npm installया npm updateदोनों में से कोई भी पैकेज-लॉक.जॉन फ़ाइल में निर्भरता को अपडेट नहीं करता है।

मैंने इस पर बहुत सारे googling किए हैं, साथ ही फ़ाइल को हटा दिया है और किया है npm install

अगर कोई भी इसे हल करने में मदद कर सकता है तो मैं बहुत सराहना करूँगा। प्रश्न में पैकेज Hoek है, जो मेरे पास वास्तव में मेरे पैकेज में नहीं है। फाइल फ़ाइल।

अग्रिम में बहुत धन्यवाद।


2
आपको पैकेज-लॉक हटाने की कोशिश करें। आगजनी और फिर से चलाएँ npm फिर से स्थापित करें
ऋषिकेश ढोकरे

1
आप यह जानने के लिए अपनी निर्भरता की जांच कर सकते हैं कि कौन सा हॉक पर निर्भर करता है और एक को अपडेट करें। (लेकिन आप भी भाग्य से बाहर हो सकते हैं और उस निर्भरता का कोई नया संस्करण नहीं है।)
रोलैंड स्टार्क

मैं @RishikeshDhokare
xpto

मैंने @RishikeshDhokare कहा। समस्या खुद के लिए हल
melih sahin

जवाबों:


41

ऐसा लगता है कि होक आपकी निर्भरता में से एक की निर्भरता है (इसलिए, आपके पैकेज में एक पैकेज है। जसन इसे स्वयं के पैकेज की आवश्यकता है ।json)।

आपने पहले ही सफलता के बिना अपनी परियोजना निर्भरता को हटाने / पुनः स्थापित करने और अपडेट करने की कोशिश की है, इसलिए ऐसा लगता है कि प्रश्न में पैकेज निर्भरता का एक स्पष्ट या अधिकतम संस्करण निर्दिष्ट है।

आपके प्रत्येक आश्रित के लिए package.json को देखे बिना, अपडेट को बाध्य करने के बारे में आगे सलाह देना मुश्किल होगा।

संपादित करें: आपको यह पता लगाने में मदद करने के लिए कि कौन से पैकेज किस निर्भरता का उपयोग कर रहे हैं, आप एनपीएम के lsआदेश का उपयोग कर सकते हैं : https://docs.npmjs.com/cli/ls

उदाहरण के लिए, यह देखने के लिए कि कौन से पैकेज Hoek का उपयोग कर रहे हैं: npm ls hoek

संपादित करें 2: जैसा कि Ulysse BN सही ढंग से बताता है, यदि आपके पास NPM संस्करण 6 या उसके बाद का है, तो आप npm audit fixNPM से आपके लिए भेद्यता को ठीक करने का प्रयास करने के लिए कह सकते हैं ।

संपादन 3: इसे पढ़ने वालों को नीचे दिए गए JBallin के उत्तर को भी देखना चाहिए। यह मेरे द्वारा दी गई जानकारी पर फैलता है, और (मेरी राय में) एक अधिक संरचित उत्तर है जो ओपी के प्रश्न को बेहतर तरीके से संबोधित करता है। हालाँकि - यदि आप एक त्वरित सुधार चाहते हैं - यह उत्तर पर्याप्त होना चाहिए।


3
मुझे एक अलग पैकेज (ग्रोएल) के साथ एक समान समस्या हो रही है। मैं अनुमान लगा रहा हूं कि यह मेरे लिए कुछ ऐसा package.jsonसंस्करण है जो ग्रोनल के विशिष्ट (कमजोर) संस्करण पर निर्भर करता है। आपका जवाब सही रास्ते पर है और आप शायद इसे नेल कर सकते हैं यदि आप उस कमांड को साझा कर सकते हैं जो दिखाएगा कि इसमें कौन सा पैकेज (एस) package.jsonदिखावा करने वाले पर निर्भर है package-lock.json
फुहरामैन

अद्यतन उत्तर देखें। यदि आपको अतिरिक्त सहायता की आवश्यकता है - एक नया प्रश्न बनाएं। :)
एलेक्स मुलिनचॉक

धन्यवाद। हो गया: stackoverflow.com/questions/50764225/…
Fuhrmanator

क्या आप सुनिश्चित हैं कि एक अतिरिक्त प्रश्न का वारंट था? वे नकलची लगते हैं।
जेब्लिन

@JBallin से मेरा जवाब कई बार अपडेट किया गया है। यह मूल रूप से डुप्लिकेट के रूप में योग्य नहीं हो सकता है।
एलेक्स मुलचिनॉक

25

TLDR: अद्यतन मूल पैकेज का उपयोग कर npm i $PARENT_PKG_NAME


ध्यान दें

निर्भरता को अद्यतन करते समय, आपको किसी भी परिवर्तन के लिए CHANGELOG की समीक्षा करनी चाहिए।

निदान

npm auditदोनों कमजोर पैकेज को प्रकट करेगा (ध्यान दें कि आपको इसके लिए एक पैकेज-लॉक.जॉसन फ़ाइल की आवश्यकता होगी, इसलिए आपको चलाने की आवश्यकता होगी npm i), साथ ही साथ पैकेज कि यह (यदि लागू हो) की निर्भरता है। ध्यान दें कि आप npm ls $CHILD_PKG_NAMEइसकी मूल निर्भरता देखने के लिए भी उपयोग कर सकते हैं ।

क्विक फिक्स अटेम्प्ट

npm audit fixऔर npm audit fix --forceएक कोशिश के लायक हैं, लेकिन कभी-कभी फिक्स को मैन्युअल रूप से करने की आवश्यकता होगी (नीचे देखें)।

मैनुअल फिक्स

सबसे अधिक संभावना है कि माता-पिता पैकेज ने पहले से ही अपनी निर्भरताएं तय कर ली हैं (आप उनके GitHub में जाकर और हाल ही में किए गए कमिट्स की समीक्षा करके यह सत्यापित कर सकते हैं - या यह देखते हुए कि यह इसे ठीक करता है), तो आप बस चला सकते हैं npm i $PARENT_PKG_NAME @$NEW_VERSIONऔर यह आपके पैकेज-लॉक को अपडेट कर देगा .json।

यदि माता-पिता ने भेद्यता तय नहीं की है

यदि अनुचर उत्तरदायी नहीं लगता है, तो आप एक वैकल्पिक पैकेज का उपयोग करने पर विचार कर सकते हैं जो एक ही चीज़ को पूरा करता है या पैकेज को फोर्क करने और स्वयं को भेद्यता को अपडेट करने के लिए।

फिक्स को सत्यापित करें

अब आप यह सत्यापित कर सकते हैं कि इसने काम करके यह npm auditसुनिश्चित किया है कि कोई भेद्यता दिखाई न दे। अपने परिवर्तन करें, उन्हें GitHub पर धकेलें, अपनी सूचनाओं / अलर्टों को ताज़ा करें और उन्हें हटा दिया जाना चाहिए!


मेरे मामले में क्विक फ़िक्स के बारे में न तो काम करता है और न ही इस उत्तर में मैनुअल काम करता है क्योंकि अभिभावक एक ढांचा है कि अद्यतन में पूरी तरह से एपीआई बदल गया और उस पुस्तकालय से भी छुटकारा मिल गया? इसका कारण यह है कि माता-पिता की धोखाधड़ी अभी भी पुरानी लाइब्रेरी का उपयोग करती है। वास्तव में पुराना अभी भी मंटेनडेड है, लेकिन अपडेट नहीं है, मेरा मतलब है कि मैं कैसे आगे बढ़ सकता हूं?
कारमाइन टैम्बस्किया

1
@CarmineTambascia यदि आप जिस पैकेज का उपयोग कर रहे हैं वह अपनी कमजोरियों को ठीक नहीं कर रहा है (मैं उम्मीद करता हूं कि इसमें कोई समस्या / पीआर खुल जाएगा) - मैं पैकेज के अपने खुद के कांटे बनाने पर विचार करूंगा, वल्न्स को ठीक करूंगा, में प्रभावित पैकेज का स्थान।
जेबलिन

क्या बाल पैकेज को अपडेट करने का कोई तरीका है? मामले में जहां कमजोरियों के लिए मूल पैकेज को सही नहीं किया गया है?
हर्षिता

@ हर्षिता ने "यदि माता-पिता ने भेद्यता तय नहीं की है" शीर्षक खंड देखें
जेबलिन

1
@ हर्षिता क्या तुम उनके पास पहुँच गए? उन कमजोरियों को भी ठीक करना उनके हित में है।
जेब्लिन

6

यदि आपके पास npm @ 6 या बाद में है, तो आप npm audit fixअपने सुरक्षा मुद्दों के लिए उपयोग कर सकते हैं।


1
वहाँ विभिन्न उपकरणों के टन कर रहे हैं और वे एक ही भेद्यता डेटाबेस नहीं है। मुझे जो सबसे अधिक पसंद आया वह है स्नेच।
उलसीसे बीएन

2

उपयोग:

एनपीएम आई हॉक

npm hoek का नवीनतम संस्करण स्थापित करेगा और आपका package.lock.json अपडेट हो जाएगा।


2

package-lock.jsonमैन्युअल रूप से संपादित करें और निर्धारित पैकेज संस्करण को अपडेट करें और फिर उपयोग करें

npm ci

जो पहले package-lock.jsonअनदेखा करके पैकेजों को स्थापित करेगा package.json। फिर उपयोग करें

npm audit fix

अगर यह ठीक से किया जाता है, तो फिर से सुनिश्चित करें। यदि यह मदद नहीं करता है, तो अन्य दिए गए समाधानों का उपयोग करें।

अधिक जानकारी यहाँ:

https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable

या यहाँ: https://docs.npmjs.com/auditing-package-d dependencies-for-security-nululifications


एक अतिरिक्त उपाय हो सकता है: npmjs.com/package/npm-check-updates
लोनली

यह एक अच्छा वैकल्पिक उपाय है। यदि यह प्रकाशित किए जाने वाले पैकेज के अंदर किया जाता है, तो यह काम नहीं करेगा क्योंकि पैकेज-लॉक.जसन फ़ाइल प्रकाशित नहीं होती है, लेकिन स्थानीय रूप से एक पैकेज का उपयोग करने के लिए, यह सबसे अच्छा समाधान npm audit fixनहीं हो सकता है ।
rpivovar

1

असुरक्षित एनपीएम पैकेजों की जांच करने के लिए, बस निम्नलिखित कमांड का उपयोग करें:

npm audit

असुरक्षित npm पैकेजों को ठीक करने के लिए, बस निम्नलिखित कमांड्स का उपयोग करें जो पैकेज-लॉक को ठीक करेगा। json भी:

npm audit fix

0

मेरे पास यह मुद्दा था और यह पाया गया कि ऐसा इसलिए था क्योंकि जिस सर्वर पर मैं npm चला रहा था, उस पर npm का एक पुराना संस्करण था- package-lock.json केवल नए संस्करणों द्वारा समर्थित है।


0

क्या आपने यह कोशिश की: अपनी परियोजना के रूट पर जाएं, package-lock.jsonफ़ाइल node_modulesऔर .cacheफ़ोल्डरों को हटाएं , और फिर npm install


-4

नई निर्भरताएँ स्थापित करने के बाद पैकेज- lock.json फ़ाइल को अद्यतन करने के लिए निम्न आदेश चलाएँ:

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