প্রয়োজনীয় শিম অপশনটি কাজ করছে না


11

আমি ম্যাজেন্টো 2-র জন্য একটি মডিউল বিকাশ করছি এবং আমি jquery এর উপর নির্ভরশীল কাস্টম জাভাস্ক্রিপ্ট লোড করতে প্রয়োজনীয় জেএস ব্যবহার করছি। আমি কাস্টম স্ক্রিপ্ট এবং jquery মধ্যে এই নির্ভরতা সেট করতে প্রয়োজনীয় js-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

আমার প্রয়োজনীয়js-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']
    }
};

এটি আমার পিএইচটিএমএল ফাইলের জাভাস্ক্রিপ্ট:

require(['jquery', 'domReady!', 'picturefill', 'flexslider', 'easing', 'hoverintent', 'fitvids', 'vimeo'], function($) {
    "use strict";

    // javascript here

});

আমি এখানে কী ভুল করছি, শিম বিকল্পটি কেন সম্মানিত নয় এবং অন্যান্য স্ক্রিপ্টগুলির আগে jQuery সর্বদা লোড হয় না।

উত্তর:


20

আপনাকে নীচের মতো প্রয়োজনীয় js-config.js সেট করতে হবে ,

আরও বিশদ, লিঙ্কটি দেখুন, ম্যাজেন্টো 2 এ কীভাবে প্রয়োজনীয়তা সংক্রান্ত ত্রুটি সমাধান করা যায়

 var config = {
        paths: {
                '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': {
                    deps: ['jquery']
                },
                'picturefill': {
                    deps: ['jquery']
                },
                'easing': {
                    deps: ['jquery']
                },
                'hoverintent': {
                    deps: ['jquery']
                },
                'fitvids': {
                    deps: ['jquery']
                },
                'vimeo': {
                    deps: ['jquery']
                }
        }
    };

উপরের কোডটি ব্যবহার করুন এবং ভের ফোল্ডারটি সরিয়ে চেষ্টা করুন। ধন্যবাদ।


এটি সত্যই কৌতুকটি করতে পারে বলে মনে হচ্ছে এবং আমি এটি উত্তর হিসাবে চিহ্নিত করেছি। আমি বুঝতে চাই কেন এটি যদিও কাজ করে। এটি মানচিত্রের কনফিগারেশনের পরিবর্তে পাথ বা শিম কনফিগারে নির্দিষ্ট নির্ভরতা সেটিংস। প্রয়োজনীয় সংস্থার ডকুমেন্টেশনে উল্লেখ করা হয়েছে যে আপনি প্রতিটি নির্ভরতা পৃথকভাবে নির্দিষ্ট করে না দিয়ে শিম কনফিগারেশনে নির্ভরতার একটি অ্যারে ব্যবহার করতে পারেন। সুতরাং আমার অনুমান যে এটি পথগুলি বনাম মানচিত্রের পার্থক্য, তবে কেন?
সলিউড

2
আপনি কি এই পোস্টটি থেকে রেফারেন্স পরীক্ষা করতে পারেন stackoverflow.com/questions/19216580/requirejs-paths-vs-map
রাকেশ Jesadiya

1
এটি দরকারী তথ্য হিসাবে কখনই / বার্তি মুছবেন না
সর্বোচ্চ

হাই রাকেশ, আপনি কি উপরোক্ত কোডটি কীভাবে কাজ করে তা ব্যাখ্যা করতে পারেন
জাইসা

@ জাইসা, উপরের লিঙ্কটিতে আমি আমার ব্লগে আরও বিস্তারিত
জানিয়েছি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.