0

本当にこれに夢中になります:

AngularJS と RequireJS を組み合わせようとしています。何度か失敗した後、私はAngularAMDに目を向けました。基本的なプロセスに従いましたが、この厄介なエラーが発生し続けます。

モジュール ngStorage のインスタンス化に失敗しました: モジュール 'ngStorage' が利用できません! モジュール名のつづりを間違えたか、ロードするのを忘れました...

ngStorageは、シンプルなサードパーティの Angular モジュールです。

ここに私のmain.js があります:

require.config({
  paths: {
    angular: 'js/angular.min',
    angularAMD: 'js/angularAMD.min',
    ngload: 'js/ngload.min',
    ngStorage: 'js/ngStorage.min'
  },
  shim: {
    angularAMD: ['angular'],
    ngload: ['angularAMD'],
    ngStorage: ['angular'] // Also tried with ['angularAMD'], and without this line at all
  },
  deps: ['js/app']
});

そして私のapp.js :

define(['angularAMD','ngStorage'], function(angularAMD) {
    var app = angular.module('tyleApp', ['ngStorage']);
    return angularAMD.bootstrap(app);   // Fails here...
});

アプリから他のすべてを削除しましたが、ここで失敗します...何が間違っていますか?

注:私も試しました:

define(['angularAMD','ngload!ngStorage'], function(angularAMD) {

しかし、私は得る:

angularAMD が初期化されていません。最初に angularAMD.bootstrap(app) を呼び出す必要があります。

4

1 に答える 1

0

ngStorage はすでに AMD に従って定義されているため、そのための shim を記述する必要はありません。

require.config({
  paths: {
    angular: 'js/angular.min',
    angularAMD: 'js/angularAMD.min',
    ngload: 'js/ngload.min',
    ngStorage: 'js/ngStorage.min'
  },
  shim: {
    angularAMD: ['angular'],
    ngload: ['angularAMD'],

  },
  deps: ['js/app']
});

そして、あなたの app.js では、あなたのパスに同じ名前の ngStorage を保持してください。この名前は、別の名前を付けると、別の文字列になる可能性があります。

たとえば、パスで別の名前を使用する場合、たとえば、パスで次のようにします。
angularStorage: 'js/ngStorage.min'

あなたのapps.jsは次のようになります:

define(['angularAMD','angularStorage'], function(angularAMD) {
    var app = angular.module('tyleApp', ['ngStorage']);
    return angularAMD.bootstrap(app);   
});

そのため、requireJS で定義したとおりに「angularStorage」を使用し、angular.module() は ngStorage ソース コードで定義されているモジュール名「ngStorage」を引き続き使用します。

于 2015-06-07T19:12:48.417 に答える