अनकैप्ड टाइपर: अपरिभाषित jquery-min.js लोड करने पर एक फ़ंक्शन नहीं है


104

मैं एक सामान्य वेबपेज बना रहा हूँ जिसके लिए मुझे पाँच सीएसएस फाइलें और दस जावास्क्रिप्ट फाइलें लोड करने की आवश्यकता है।

  • HTML पेज में अलग से लोड करने पर, मेरा वेबपेज ठीक लोड होता है।
  • अब उत्पादन के लिए, मैंने सभी जावास्क्रिप्ट को एक फ़ाइल में, आवश्यक क्रम में, और सभी सीएसएस को दूसरी फ़ाइल में बदल दिया। लेकिन जब मैं वेब पेज को संक्षिप्त फ़ाइलों के साथ चलाने की कोशिश करता हूं तो यह एक त्रुटि कहती है:

    Uncaught TypeError: undefined is not a function

उस लाइन पर जहां jquery.min.js को कॉन्सेटिव जावास्क्रिप्ट फाइल में लोड किया जा रहा है।

इसे कम करने के लिए मैं क्या कर सकता हूं? मैं सभी फाइलों को संक्षिप्त करना चाहता हूं और उत्पादन के लिए उन्हें छोटा करना चाहता हूं। कृपया मदद कीजिए।


संपादित करें: मैंने जावास्क्रिप्ट और सीएसएस का विलय उस क्रम में किया जब वे व्यक्तिगत रूप से लोड किए जा रहे थे और ठीक काम कर रहे थे।


5
हम कैसे जान सकते हैं कि undefinedअगर आपको कोई कोड नहीं दिखाना है तो क्या होगा ?
जोसेफ

अपरिभाषित jquery-1.6.1.min.js में आ रहा है जो IM लोड हो रहा है। शायद jquery को ठीक से लोड नहीं किया जा रहा है या कुछ और?
घोस्टकोडर

शायद उच्च रैंकिंग उत्तर स्वीकार करें?
एलिसन

जवाबों:


179

इस समस्या को अभी भी हल नहीं किया गया है, मान लें कि बहुत सी व्यक्तिगत फाइलें अर्धविराम के साथ अपने कोड को समाप्त नहीं करती हैं। अधिकांश jQuery स्क्रिप्ट समाप्त हो जाती हैं (jQuery)और आपके पास होना आवश्यक है (jQuery);

अलग-अलग फ़ाइलों के रूप में स्क्रिप्ट बस ठीक लोड होगी, लेकिन एक व्यक्तिगत फ़ाइल के रूप में आपको अर्धविराम की आवश्यकता होगी।


18
+1। जावास्क्रिप्ट कोड को सम्मिलित करते समय, आपको हमेशा उन्हें अर्धविराम पर जोड़ना चाहिए। उनमें से कई अभी भी मान्य हैं, जबकि त्रुटियों के लिए कम।
बर्गी

9
यह डिबग करने के लिए अविश्वसनीय रूप से मुश्किल है। वास्तव में प्रभावी उत्तर के लिए धन्यवाद!
घीस

5
बूटस्ट्रैप का जेएस एक ऐसा उदाहरण है, जाहिरा तौर पर। इसके लिए धन्यवाद! वह असली नूडल स्क्रैचर था।
केविन बील

मैं youtube iframe API आयात करने का प्रयास कर रहा हूं, और यह अर्धविराम पर समाप्त नहीं होता है, और मुझे यह त्रुटि मिल रही है। मैं इसे किसी भी चीज़ के साथ सम्‍मिलित नहीं कर रहा हूं ... मैं इसे jQuery.getScript () के साथ लोड कर रहा हूं। तो ... क्या यह मेरी त्रुटि का कारण हो सकता है? या इससे कोई मतलब नहीं है?
डैनियल

1
यदि हम लाइब्रेरी में काम करते समय इस त्रुटि को देखते हैं, तो हम इसे कैसे हल करेंगे? मैं २.३.२ / js / bootstrap.min.js और / १.४.६/bootstrap-editable/js/bootstrap-editable.min.js का उपयोग करने की कोशिश कर रहा हूँ
२-३५:

28

आपको उस ऑर्डर को दोबारा जांचना पड़ सकता है जिसमें आप फाइलों को मर्ज कर रहे हैं, यह कुछ इस तरह होना चाहिए:

  1. jquery.min.js
  2. jQuery-ui.js
  3. आपके द्वारा लोड की जा रही कोई भी तृतीय पक्ष प्लगइन्स
  4. आपका रिवाज JS

इसके इस तरह केवल json2.js, jquery-1.6.1.min.js, jquery प्लगइन्स, मेरा कोड। इस क्रम में।
भूतकाल

अगर json2.js किसी jquery फ़ंक्शन का उपयोग कर रहा है, तो jquery.min.js से पहले होना चाहिए। मै सुझाव दूंगा। jquery.min.js, jqueryPlugins, json2.js, मेरा कोड।
बिलाल मुर्तजा

18

इस समाधान ने मेरे लिए काम किया

    ; (समारोह ($) {
        // तुम्हारा कोड
    }) (JQuery);

अपने कोड को क्लोजर के अंदर ले जाएं और jQuery के बजाय $ का उपयोग करें

मैंने उपरोक्त समाधान /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma में पाया।

बहुत ज्यादा कोचिंग के बाद


16

मुझे jQuery के विभिन्न संस्करणों के दो संदर्भ होने से एक ही त्रुटि मिली।

मेरे मास्टर पृष्ठ में:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

और पेज पर भी:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script>

7

मुझे हाल ही में jQuery सत्यापन प्लग-इन के साथ स्क्विश का उपयोग करते हुए , js त्रुटि भी मिल रही थी:

"अपरिभाषित कोई फ़ंक्शन नहीं है"

मैं के संदर्भ में बदलकर यह तय unminified बल्कि jquery.validate.min.js से jquery.validate.js फ़ाइल,।

@MvcHtmlString.Create(
    @SquishIt.Framework.Bundle.JavaScript()
        .Add("~/Scripts/Libraries/jquery-1.8.2.min.js")
        .Add("~/Scripts/Libraries/jquery-ui-1.9.1.custom.min.js")
        .Add("~/Scripts/Libraries/jquery.unobtrusive-ajax.min.js")
        .Add("~/Scripts/Libraries/jquery.validate.js")
        .Add("~/Scripts/Libraries/jquery.validate.unobtrusive.js")
         ... more files

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


निर्विवाद संस्करण का उपयोग करना मेरे लिए सिर्फ टिकट था - धन्यवाद।
पॉल दीन

मेरे लिए यह एक NuGet पैकेज के संस्करण 1.0.2 से json2.min.js फ़ाइल थी जो समस्या पैदा कर रही थी। मैंने इसे गैर-मिनी फ़ाइल में बदल दिया और स्क्विश संयुक्त फ़ाइल अब ठीक काम करती है।
बिलोरिड

6

उन लोगों के लिए जो अभी भी इसे ठीक नहीं कर सके, मैंने jQuery का उपयोग करते समय अपने 'इस' को '$' (इस) में बदलकर ऐसा किया।

ईजी:

$('.icon').click(function() {
    this.fadeOut();
});

फिक्स्ड:

$('.icon').click(function() {
    $(this).fadeOut();
});

5

मैं बहुत ही समस्या में चला गया, जब गलती से बहुत ही नाम के साथ चर का नाम दिया, समारोह के रूप में।

तो यह:

isLive = isLive(data);

ओपी के उल्लेखित त्रुटि संदेश को उत्पन्न करने में विफल रहा।

इसे ठीक करना उतनी ही सरल थी जितनी ऊपर की लाइन में बदलना:

isItALive = isLive(data);

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


5

हां, मैंने यह भी तय किया कि इसे js पुस्तकालयों में बदलकर अघोषित किया जाएगा।

उदाहरण के लिए, टैग में, परिवर्तन:

<script type="text/javascript" src="js/jquery.ui.core.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.min.js"></script>

के लिये:

<script type="text/javascript" src="js/jquery.ui.core.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.js"></script>

'मिन' को अमान्‍य बताते हुए।

विचार के लिए धन्यवाद।


3

याद रखें: जावास्क्रिप्ट फ़ंक्शन CASE SENSITIVE हैं।

मेरे पास एक मामला था जहां मुझे पूरा यकीन है कि मेरा कोड आसानी से चलेगा। लेकिन फिर भी, एक त्रुटि हुई और मैंने Google Chrome के जावास्क्रिप्ट कंसोल को चेक किया कि वह क्या है।

मेरी त्रुटि रेखा है

opt.SetAttribute("value",values[a]);

और एक ही त्रुटि संदेश मिला:

Uncaught TypeError: undefined is not a function

ऊपर दिए गए कोड में कुछ भी गलत नहीं है लेकिन यह नहीं चल रहा था। मैं लगभग एक घंटे के लिए समस्या निवारण करता हूं और फिर इसकी तुलना मेरे अन्य रनिंग कोड से करता हूं। मेरी त्रुटि यह है कि इसे सेट किया गया था SetAttribute, जो होना चाहिए setAttribute


2

मामले में मेरे जैसे कोई भी बाहर हैं, मुझे यह निराशा होती है क्योंकि मैं एक साधारण भूल गया था

new

किसी नए ऑब्जेक्ट को इंस्टेंट करने से पहले कीवर्ड।


1

मेरे पास निम्न कोड के साथ एक ही संदेश था (IcedCfishScript में):

f = (err,cb) ->
  cb null, true

await f defer err, res
console.log err if err  

यह मुझे नियमित आईसीएस कोड की तरह लग रहा था। मैंने नियमित रूप से कॉफीस्क्रिप्ट के लिए वेट-डेफर निर्माण का खुलासा किया:

f (err,res) ->
  console.log err if err

क्या वास्तव में खुशी हुई कि मैंने 1 कॉलबैक फ़ंक्शन (2 मापदंडों के साथ) पास करने की कोशिश की f, जिससे दो मापदंडों की उम्मीद की जा सके, जो प्रभावी रूप से cbअंदर स्थापित नहीं कर रहे थे f, जिसे कंपाइलर ने सही रूप में रिपोर्ट किया थाundefined is not a function

गलती इसलिए हुई क्योंकि मैंने कॉलबैक-स्टाइल बॉयलरप्लेट कोड को नेत्रहीन चिपकाया था। fइसमें किसी errपैरामीटर की आवश्यकता नहीं है, इस प्रकार बस होना चाहिए:

f = (cb) ->
  cb null, true
f (err,res) ->
  console.log err if err

सामान्य स्थिति में, मैं मिलान हस्ताक्षर के लिए फ़ंक्शन हस्ताक्षर और इनवोकेशन को दोबारा जांचना चाहूंगा। त्रुटि संदेश में कॉल-स्टैक सहायक संकेत प्रदान करने में सक्षम होना चाहिए।

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


1

सुनिश्चित करें कि आपने कोई टिप्पणी की है। कभी-कभी जब आप कॉपी और पेस्ट करते हैं, तो आप "/ *" छोड़ देंगे।

इसके अलावा जब आप कंसोल में जाते हैं तो वे आपकी त्रुटियों को सूचीबद्ध करेंगे और आपको इसे एक बार में लेना चाहिए। यदि आप "बिना सिलेक्ट किए हुए सिंटेक्स: अनपेक्षित टोकन *" देखते हैं, तो इसका मतलब यह हो सकता है कि यह आपकी जेएस फाइल को पढ़ रहा है और यह पहली पंक्ति में नहीं है।

/ *! * jquery.tools 1.1.2 - वेब के लिए लापता UI लाइब्रेरी * * [tools.tabs-1.0.4, tools.tooltip-1.1.2, tools.scrollable-1.1.2, tools.overlay-1.1.2, tools.expose-1.0.5] * * Copyright (c) 2009 Tero Piirainen * http://flowplayer.org/tools/ * फाइल जनरेट: बुध 07 अक्टूबर 09:40:16 GMT 2009 * /


0

मुझे यह तब मिला जब मैंने गलती से कई मापदंडों को एक jquery फ़ंक्शन में पारित कर दिया, जिसमें केवल एक कॉलबैक पैरामीटर की उम्मीद थी।

अन्य समस्या निवारण के लिए: सुनिश्चित करें कि आप अतिरिक्त मापदंडों के लिए अपने सभी jquery फ़ंक्शन कॉल की जांच करते हैं।

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