मैं Magento2 के लिए एक मॉड्यूल विकसित कर रहा हूं और कस्टम javascript को लोड करने के लिए आवश्यकता का उपयोग कर रहा हूं जो jquery पर निर्भर करता है। मैं कस्टम स्क्रिप्ट और jquery के बीच इस निर्भरता को सेट करने के लिए requjs-config.js में शिम विकल्प का उपयोग कर रहा हूं। मुद्दा यह है कि यह निर्भरता (हमेशा) सेट नहीं है। कभी-कभी jQuery स्क्रिप्ट से पहले लोड करता है और सब ठीक है, लेकिन कभी-कभी यह स्क्रिप्ट की त्रुटि के परिणामस्वरूप लोड होता है:
Uncaught ReferenceError: jQuery is not defined(anonymous function) @ jquery.easing.1.3.js:39
Uncaught ReferenceError: jQuery is not defined(anonymous function) @ jquery.flexslider-min.js:5
Uncaught TypeError: $(...).flexslider is not a function
मेरी आवश्यकता के उदाहरण के नीचे देखें- config.js:
var config = {
map: {
'*': {
'flexslider': 'Vendor_Modulejs/jquery.flexslider-min',
'picturefill': 'Vendor_Modulejs/picturefill.min',
'easing': 'Vendor_Modulejs/jquery.easing.1.3',
'hoverintent': 'Vendor_Modulejs/jquery.hoverIntent',
'fitvids': 'Vendor_Modulejs/jquery.fitvids',
'vimeo': 'Vendor_Modulejs/jquery.vimeo.api.min'
}
},
shim: {
'flexslider': ['jquery'],
'picturefill': ['jquery'],
'easing': ['jquery'],
'hoverintent': ['jquery'],
'fitvids': ['jquery'],
'vimeo': ['jquery']
}
};
यह मेरी phtml फ़ाइल में जावास्क्रिप्ट है:
require(['jquery', 'domReady!', 'picturefill', 'flexslider', 'easing', 'hoverintent', 'fitvids', 'vimeo'], function($) {
"use strict";
// javascript here
});
मैं यहाँ क्या गलत कर रहा हूँ, क्यों शिम विकल्प को सम्मानित नहीं किया गया है और jQuery को हमेशा अन्य लिपियों से पहले लोड नहीं किया जाता है।