3

最近Javascriptプロジェクトを開始し、現在それをrequire.jsに移動しています。spin.jsライブラリを除いて、これまでのところすべてが正常に機能していました。spin.jsに関連するものにアクセスしようとすると、次のエラーメッセージが表示されます。

Uncaught 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依存関係のある他のモジュールがあるため、を使用しています。ただし、他のすべては正常にロードされているようです。ここで何が欠けていますか?

編集:

アレックスが指摘したように、私のライブラリの包含は間違っていました。バックボーン.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 に答える