वेबपैक - महत्वपूर्ण निर्भरता: एक निर्भरता का अनुरोध एक अभिव्यक्ति है


86

requestनंगे वेबपैक प्रोजेक्ट में आयात करते समय मुझे तीन चेतावनी संदेश मिल रहे हैं । बग को पुन: पेश करने के लिए एक न्यूनतम उदाहरण GitHub (रन npm installऔर npm start) पर उपलब्ध है ।

Critical dependency: the request of a dependency is an expression

मैं इस चेतावनी से कैसे छुटकारा पा सकता हूं?


अधिक जानकारी:

Webpack requireएक न्यूनतम बंडल बनाने के लिए कॉल को सांख्यिकीय रूप से हल करने का प्रयास करता है । एक पुस्तकालय एक (जैसे कॉल की आवश्यकता होती है में चर या भाव का उपयोग करता है require('' + 'nodent')में इन पंक्तियों के ajv), Webpack उन्हें स्थिर और आयात पूरे पैकेज को हल नहीं कर सकते।

मेरा तर्क यह है कि यह गतिशील आयात उत्पादन में वांछनीय नहीं है, और कोड को सबसे अच्छा चेतावनी-मुक्त रखा गया है। इसका मतलब है कि मैं कोई भी समाधान चाहता हूं जो समस्या का समाधान करे। जैसे:

  1. आवश्यक पुस्तकालयों को आयात करने और चेतावनी को होने से रोकने के लिए मैन्युअल रूप से वेबपैक कॉन्फ़िगर करें।
  2. hack.jsमेरे प्रोजेक्ट में एक फ़ाइल जोड़ना जो किसी तरह से आवश्यक कॉल को ओवरराइड करता है।
  3. मेरे पुस्तकालयों को अपग्रेड करना। ajv-5.0.1-beta.3एक चेतावनी है कि चुप्पी ठीक करता है। हालांकि, अगर मैं इसे उपयोग करना चाहते हैं, मैं जब तक यह जब तक जारी किया गया है, और फिर इंतजार करना har-validatorऔर requestबाद वाले अपडेट छोड़ें। अगर वहाँ har-validatorबीटा संस्करण का उपयोग करने के लिए मजबूर करने का एक तरीका है ajv, जो मेरी समस्या को हल करेगा।
  4. अन्य

1. github.com/epoberezkin/ajv/issues/117#issuecomment-198328830 2. मुझे नहीं लगता कि यह काम करेगा 3. आपको थोड़ा इंतजार करना पड़ेगा।
esp

@esp: उस github टिप्पणी से लगता है कि मैं क्या देख रहा हूं, लेकिन यह चेतावनी को चुप नहीं करता है। अगर मैं इसे बदल देता हूं new webpack.IgnorePlugin(/async/, /ajv/), तो तीन में से दो चेतावनी दी गई हैं लेकिन वेबपैक Cannot find module "../async"। यह काम करने के लिए उचित जादू मूल्य के बारे में कोई विचार?
जोड़ीयुग 21:17

जीथब कोड उदाहरण का लिंक टूट गया है। Pls सीधे सवाल में कोड डाल दिया।
कोडशिम्पी

जवाबों:


25

के साथ हल किया npm install request@2.79.0 --save

के लेखकों के अनुसार ajv, इस मुद्दे को संभवतः requestकुछ हफ्तों के समय में नवीनतम संस्करण में हल किया जाएगा ।


@maembe कोशिश करें npm remove requestऔर पुनः स्थापित करें, फिर संस्करण संख्या से पहले package.jsonहटा दें ^। यदि आप छोड़ देते हैं ^, तो पैकेज को अपडेट किया जा सकता है npm updateऔर चेतावनी फिर से दिखाई देती है।
जोड़ीगुज

मेरे लिए काम नहीं किया। लेकिन @DhirendraNk द्वारा नीचे दिए गए एक अलग उत्तर में सुझाव, जो वेबपैक को बदलना है। कॉन्टेक्स्ट रिप्लेसमेंटप्लगिन ने मेरे लिए काम किया।
विल

10

इसे बदलें

new webpack.ContextReplacementPlugin(
        /angular(\\|\/)core(\\|\/)@angular/,
        helpers.root('./src'), // location of your src
        {} // a map of your routes
    ),

इसके साथ-

new webpack.ContextReplacementPlugin( /(.+)?angular(\\|\/)core(.+)?/, root('./src'), {} )

8
यह काम करता है। यह अधिक गहन व्याख्या के लिए अच्छा होगा कि क्यों नियमित अभिव्यक्ति परिवर्तन इस समस्या को ठीक करता है।
18:50 बजे atconway

यह मेरे लिए काम करता है, यह चेतावनी को देखकर कष्टप्रद है, धन्यवाद।
विल

2
क्या किसी को पता है कि इस कोड को कहां खोजना है? मैं कोड को प्रतिस्थापित करने में असमर्थ हूं।
प्रेम पोपटिया

2
यह काम करता है क्योंकि आप System.Importफ़ंक्शन को बता रहे हैं कि node_modulesफ़ोल्डर में स्रोत कोड कहां ढूंढें । पथ आपके द्वारा उपयोग किए जा रहे कोणीय संस्करण के आधार पर बदलता है। इसे एंगुलर टीम द्वारा बेहतर तरीके से संभाला जाना चाहिए, उम्मीद है कि यह पहले ही हो चुका है।
रॉबर्ट ब्रिसिटा

1

यह चेतावनी पैकेज पर निर्भरता (या निर्भरता) में इंजेक्शन से जुड़ी हो सकती है।

यदि समस्या अचानक दिखाई देती है, तो अपने पैकेज में अंतिम संशोधन की जांच करें।

यदि आप relaunch करने की योजना बनाते हैं, तो पैकेज-लॉक को हटाने पर विचार करें npm install

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