Require.js和Imager.js未定义的函数

时间:2014-02-19 22:25:21

标签: javascript requirejs undefined amd

我在将一个Imager.js库添加到require.js加载时遇到问题,该脚本完美无需require.js

Main.js

define([
        'jquery',
        'bootstrap',
        'imager',
        'video'
    ],
    function($) {
        'use strict';
        $('.dropdown-toggle').dropdown();
        $('#bvideo').magnificPopup({
            type: 'inline'
        });
        videojs('video-cdve', {
            'controls': true,
            'autoplay': false,
            'preload': 'auto',
            'width': 'auto',
            'height': 'auto'
        });
        new Imager({
            availableWidths: {
                320: '320x240',
                640: 'large',
                1024: 'large_x2',
            }
        });
    });

我收到此错误

  

未捕获的ReferenceError:未定义成像器

当我定义Imager

define([
        'jquery',
        'bootstrap',
        'imager',
        'video'
    ],
    function($, Imager) {
        'use strict';
        $('.dropdown-toggle').dropdown();
        $('#bvideo').magnificPopup({
            type: 'inline'
        });
        videojs('video-cdve', {
            'controls': true,
            'autoplay': false,
            'preload': 'auto',
            'width': 'auto',
            'height': 'auto'
        });
        new Imager({
            availableWidths: {
                320: '320x240',
                640: 'large',
                1024: 'large_x2',
            }
        });
    });

现在我发现了这个错误

  

未捕获的TypeError:undefined不是函数

什么事发生?我如何使用require ??

正确添加此库

1 个答案:

答案 0 :(得分:1)

您的参数与模块绑定的顺序与您在需求中列出它们的顺序相同,因此当您执行此操作时:

define([
        'jquery',
        'bootstrap',
        'imager',
        'video'
    ],
    function($, Imager) {

您将Imager绑定到'bootstrap'模块的值。更改顺序:

define([
        'jquery',
        'imager',
        'bootstrap',
        'video'
    ],
    function($, Imager) {

我还考虑过你是否需要为Imager提供垫片,但我在他们的code中看到他们检测到AMD环境并致电define