簡體   English   中英

AngularAMD + RequireJS:無法實例化模塊ngStorage

[英]AngularAMD + RequireJS: Failed to instantiate module ngStorage

真正使這一瘋狂:

我試圖結合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)。

ngStorage已經定義了AMD,因此您無需為此編寫墊片。

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名稱相同,如果您將其命名為另一個字符串,則此名稱可以是不同的字符串,在這種情況下,您的app.js看起來不錯。

例如,如果您在path中使用另一個名稱,例如,在path中:
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”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM