3

我最近开始了一个 Javascript 项目,现在我将其移至 require.js。到目前为止,除了spin.js库之外,一切都运行良好。当我尝试访问与 spin.js 相关的任何内容时,我收到以下错误消息:

未捕获的 ReferenceError:未定义微调器

我的requirejs.config样子是这样的:

requirejs.config({

    baseUrl: 'js',

        paths: {
            'jquery': 'lib/jquery',
            'spin': 'lib/spin',
    },

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

        'spin' : {
            deps: [],
            exports: 'Spinner'
        },
    }
});  

示例模块如下所示:

require(['spin'], 
    function(Spinner)
    {   
        new Spinner();
    }
);

我正在使用,shim config因为我有一些其他具有依赖关系的模块。不过,其他一切似乎都加载得很好。我在这里想念什么?

编辑:

正如亚历克斯指出的那样,我的图书馆收录是错误的。对于在理解backbone.js 和require.js 有困难的每个人,我推荐这本书,尤其是关于模块化开发的章节。

4

2 回答 2

2

不应在您的配置中填充自旋库。从 spin.js 源代码:

  if (typeof define == 'function' && define.amd)
    define(function() { return Spinner })
  else
    window.Spinner = Spinner

它已经在最后被定义为一个模块,并且 window.Spinner 没有被创建为一个窗口对象(这就是它不应该被填充的原因)

于 2013-02-25T11:52:06.433 回答
1

我有一个类似的案例。我没有添加到 shim 但忽略了在 Backbone 之后将 Spinner 添加到函数中,这导致它未定义。

define([
  'jquery',
  'underscore',
  'backbone',
  'spin'
],

function($, _, Backbone, Spinner) {
  var SpinnerView = Backbone.View.extend({

    initialize: function() {

      this.loadingAnimation();
    },
于 2016-04-20T20:49:15.650 回答