【问题标题】:Require JS, Loading Libraries through CDN fails需要 JS,通过 CDN 加载库失败
【发布时间】:2015-10-07 18:31:57
【问题描述】:

我已阅读此问题的答案require js loading scripts from cdn fail。但就我而言,它没有帮助。我有一个需要 JS 设置,我想使用 CDN 加载我的库。 Require JS 文档说下面是从 CDN 加载库并回退到本地文件的正确方法。

  requirejs.config({
    //To get timely, correct error triggers in IE, force a define/shim exports check.
    enforceDefine: true,
    paths: {
        jquery: [
            'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min',
            //If the CDN location fails, load from this location
            'lib/jquery'
        ]
    }
});


require(['jquery'], function ($) {
});

我使用相同的方法,但我得到一个错误,下面是我的代码

    requirejs.config({

    baseUrl: location.protocol + '//' + location.host + '/app',

    waitSeconds: 0,

    paths: {

        'jquery': ['https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min','/assets/js/vendor/jquery'],
        'jqueryPjax': '/assets/js/vendor/jquery.pjax',
        'jqueryUI': '/assets/js/vendor/jquery-ui.min',

        'jqueryMousewheel': '/assets/js/jquery.mousewheel',
        'jScrollPane': '/assets/js/jquery.jscrollpane.min',

        'fastclick': '/assets/js/vendor/fastclick',

        'jquerySlidebars': '/assets/js/jquery.slidebars.min',

        'imagesLoaded': '/assets/js/imagesloaded.pkgd.min',
        'fancyBox': '/assets/js/jquery.fancybox.pack',
        'fancyBoxThumb': '/assets/js/jquery.fancybox-thumbs',

        'text': '/assets/js/vendor/text',
        'chosen': '/assets/js/vendor/chosen',
        'bb': '/assets/js/vendor/backbone-min',
        'underscore': '/assets/js/vendor/underscore-min',
        'angular': '/assets/js/angular.min',


        'ventFactory': 'base/ventFactory',
        'util': 'base/util',
        'dom': 'base/dom',
        'actionHandler': 'base/actionHandler',
        'ajax': 'base/ajax'
    },

    shim: {
        'jquery': {
            exports: 'jQuery'
        },

        'jqueryUI': {
            deps: ['jquery']
        },

        'angular': {
            exports: 'angular'
        },

        'jqueryPjax': {
            deps: ['jquery'],
            exports: 'jQuery.fn.pjax'
        },

        'jqueryMousewheel': {
            deps: ['jquery'],
            exports: 'jQuery.fn.mousewheel'
        },

        'jScrollPane': {
            deps: ['jqueryMousewheel'],
            exports: 'jQuery.fn.jScrollPane'
        },

        'jquerySlidebars': {
            deps: ['jquery'],
            exports: 'jquerySlidebars'
        },

        'fancyBox': {
            deps: ['jquery'],
            exports: 'fancyBox'
        },
        'fancyBoxThumb': {
            deps: ['jquery', 'fancyBox'],
            exports: 'fancyBoxThumb'
        },
        'chosen': {
            deps: ['jquery'],
            exports: 'chosen'
        }
    }

});

requirejs(['jquery', 'app'], function($, app) {
    $(function() {
        app.start();
    });
});

到目前为止,我刚刚对 Jquery 进行了更改,我同时提供了 CDN URL 和本地路径,但是当我加载我的页面时出现错误

TypeError: $el.siblings 不是函数

添加 我正在使用 Require JS 来加载我的库,但是在生产中我使用的是 almond,它将所有模块组合到一个文件中,所以这与错误有关吗?

对此的任何帮助都非常感谢。谢谢

【问题讨论】:

  • 你好 Vishi,你得到的不仅仅是这个错误吗?这可能来自任何文件...
  • @Salketer 嘿,谢谢您的回复。实际上,我只是将其视为错误。我正在使用 Require JS 来加载我的库,但是在生产中我使用的是 almond,它将所有模块组合到一个文件中,所以这与错误有关吗?
  • 好吧,如果错误只发生在生产中,我会研究杏仁(我不知道)。我的猜测是,almond 会简单地从 CDN 下载 jQuery 来打包你的 JS,所以 CDN 没什么大不了的。如果即使在纯 RequireJS 上也发生错误,控制台总是会给出文件和行,这可能是您调试的起点。

标签: javascript requirejs cdn amd


【解决方案1】:

添加我正在使用 Require JS 加载我的库,但是在生产中我使用的是 almond,它将所有模块组合到一个文件中,所以这与错误有关吗?

是的,确实如此。 Almond 不能进行动态加载。换句话说,您希望 Almond 加载的所有内容都必须放在一个模块包中。您不能将 CDN 与 Almond 一起使用。

“无动态加载”是其list of restrictions中的第一个限制。

【讨论】:

  • 感谢您回答这个问题。我有些错过了杏仁的限制清单,感谢您的帮助
猜你喜欢
  • 2013-01-23
  • 2016-09-12
  • 1970-01-01
  • 2012-05-28
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多