2016-10-03 1 views
2

erreur lancé:ng fichier-upload ne fonctionne pas avec MEAN.JS application lorsque l'injection est utilisé

angular.js:13920 Error: [$injector:unpr] Unknown provider: ngFileUploadProvider <- ngFileUpload <- MyCtrl 
http://errors.angularjs.org/1.5.8/$injector/unpr?p0=ngFileUploadProvider%20%3C-%20ngFileUpload%20%3C-%20MyCtrl 
    at http://192.168.99.100:3000/lib/angular/angular.js:68:12 
    at http://192.168.99.100:3000/lib/angular/angular.js:4511:19 
    at Object.getService [as get] 

Lorsque le contrôleur est défini comme suit:

(function ($, angular) { 
'use strict'; 
angular.module('myapp').controller('MyCtrl', MyCtrl); 

    function MyCtrl(
    $scope, 
    $q, 
    $stateParams, 
    Upload, 
    $timeout 
){ 

    var vm = this; 

    function setup(){ 

     vm.stateParams = $stateParams; 

     //set scope variables here 

     viewApi(); 
    } 

    function viewApi(){ 

     vm.uploadImage = function(file, errFiles) { 
     vm.uploadedThumbnail = file; 
     vm.errFile = errFiles && errFiles[0]; 
     if (file) { 

      file.upload = Upload.upload({ 
      url: 'https://angular-file-upload-cors-srv.appspot.com/upload', 
      data: { file: file } 
      }); 

      file.upload.then(uploadSuccess, uploadError, uploadEvent); 

     } 
     }; 
    } 
    ... 
    setup(); 
    } 

    MyCtrl.$inject = [ 
    '$scope', 
    '$q', 
    '$stateParams', 
    'ngFileUpload', // Note that 'Upload' doesn't work either 
    '$timeout' 
    ]; 

}(window.jQuery || window.$, window.angular)); 

j'ai essayé et ngFileUpload Téléchargez simplement avec le même résultat. Toutes les dépendances sont déclarées et chargées. Cela a quelque chose à voir avec le schéma d'injection ne fonctionne pas correctement.

+0

Déclaration de dépendance bower: "ng-file-upload": "^ 12.2.12" – user2002018

Répondre

1

Vous devez ajouter le ngFileUpload à votre définition de module, comme ceci:

angular.module('myapp', ['ngFileUpload', 'ui.router', 'other.dependencies', ...]).controller('MyCtrl', MyCtrl); 
... 
+0

En fait, pas 'ngFileUploadProvider' mais 'ngFileUpload' selon la documentation mais cela ne résout pas le problème - cela crée un problème différent. – user2002018

+0

Vous avez raison. Je vais changer la réponse. –

+0

Comme pour l'autre erreur, vous ne pouvez déclarer votre module qu'une seule fois. Toutes ses dépendances doivent être incluses dans ce tableau original. Je suis à peu près sûr que le fournisseur d'états $ vient de ui.router. Donc, vous devez inclure cela ainsi que toutes les autres dépendances dans le tableau de module initial. –

0

En fait, comme je l'ai découvert la solution est relativement simple:

angular.module ('myapp', [ 'ngFileUpload ']). controller (' MyCtrl ', MyCtrl);

Il résout le problème ci-dessus, mais crée un nouveau problème en supprimant fournisseur état de l'application: angularjs: 68 Uncaught Erreur: [injecteur $: modulerr] Échec au module instancier monapp en raison de: Erreur: [injecteur $: UNPR] fournisseur inconnu: $ stateProvider http://errors.angularjs.org/1.5.8/ injecteur $/UNPR p0 =% 24stateProvider

nous résoudre un problème en créant un nouveau.

Et nouvelle question maintenant: comment ajouter la dépendance 'ngFileUpload' sans écraser d'autres dépendances d'application.