2014-03-31 61 views
3

我很難將angular-file-upload模塊加載到我的應用程序中。我一直在閱讀各種教程,例子,問題等等。你們能幫我弄清楚我在這裏做錯了什麼嗎?AngularJS RequireJS loading angular-file-upload

我收到以下錯誤信息:Failed to instantiate module angular-file-upload

這裏是我的代碼

mymodule中/ module.js

define(['angular', 'angular.file.upload'], function (angular) { 
'use strict'; 
    return angular.module('app.mymodule', ['angularFileUpload']); 
}); 

mymodule中/ index.js

define([ 
'./routes', 
'./models/index', 
'./controllers/index', 
'./directives/index' 
], function() {}); 

app.js

define([ 
    'angular', 
    'angular.resource', 
    'angular.ui.bootstrap', 
    'angular.ui.router', 
    './relation/index', 
    './controllers/index', 
    './directives/index', 
    'config' 
], function (angular) { 
    'use strict';  
    return angular.module('app', [ 
     'ngResource', 
     'ui.bootstrap', 
     'ui.router', 
     'app.relation', 
     'app.controllers', 
     'app.directives', 
     'app.constants' 
    ]); 
}); 

main.js

require.config({ 
    paths: { 
     'angular': '../lib/angular/angular', 
     'angular.route': '../lib/angular-route/angular-route', 
     'angular.resource': '../lib/angular-resource/angular-resource', 
     'angular.ui.bootstrap': '../lib/angular-bootstrap/ui-bootstrap-tpls', 
     'angular.ui.router': '../lib/angular-ui-router/angular-ui-router', 
     'angular.file.upload': '../lib/angular-file-upload/angular-file-upload', 
     ... 
    }, 

    shim: { 
     'angular': {'exports': 'angular'}, 
     'angular.resource': ['angular'], 
     'angular.ui.bootstrap': ['angular'], 
     'angular.ui.router': ['angular'], 
     'sails.io' : ['socket.io'] 
    } 
}); 

require([ 
    'angular', 
    'app', 
    'config', 
    'routes' 
], function(angular) { 
    'use strict'; 

    angular.element().ready(function() { 
     angular.bootstrap(document, ['app']); 
    }); 
    } 
); 

回答

2

如果你看看在source codeangular-file-upload你可以看到,它沒有自己註冊爲AMD的模塊,這意味着我們必須提供一個墊片,它可以確保所有依賴的我們加載angular-file-upload之前加載本身。

主要依賴當然angular的 - 所以我們需要建立一個墊片,以確保angularangular-file-upload之前加載。在你的情況,我想requirejs配置應該是這個樣子:

require.config({ 
    paths: { 
     "angular"    : "relative/path/to/angular", 
     "angular.file.upload" : "relative/path/to/angular-file-upload", 
     ... other modules 
    }, 
    shim: { 
     "angular": { 
      exports: "angular" 
     }, 
     "angular.file.upload": ["angular"] 
    } 
}) 

那麼你應該準備搖滾。

+0

我也遇到了類似的問題,其中'角度未定義'被拋出。我改變了墊片的角度出口和它的工作。你能解釋一下這是什麼,爲什麼只是「angular.file.upload」:[「angular」]不能工作? 「角」:{ 出口:「角」 } – Swanidhi

0

如果這是我用你可能要注入angularFileUpload而不是angular-file-upload相同的庫。

+0

我試過但沒有成功 – Frank6

+0

您可能沒幫助@Frank6,但你幫了我。謝謝! – Nate

+2

我很想知道它是如何有用的嗎? – Frank6