AngularJS Erreur: $injecteur:unpr Inconnu Fournisseur
Je suis en train de construire mon propre service, en suivant l'exemple dans la documentation de l'usine de la méthodologie. Je pense que j'ai fait quelque chose de mal mais parce que je continue à mettre l'inconnu fournisseur d'erreur. C'est mon code de mon application, y compris la déclaration, de la configuration et de l'usine de définition.
MODIFIER
J'ai maintenant ajouté tous les fichiers pour vous aider à résoudre
MODIFIER
Les détails de l'erreur ci-dessous sont les questions semble être avec getSettings, comme il est à la recherche de getSettingsProvider et ne peut pas trouver il
Error: [$injector:unpr] http://errors.angularjs.org/1.2.16/$injector/unpr? p0=getSettingsProvider%20%3C-%20getSettings
at Error (native)
at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:6:450
at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:35:431
at Object.c [as get] (http://localhost/sw/selfservice/bower_components/angular/angular.min.js:34:13)
at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:35:499
at c (http://localhost/sw/selfservice/bower_components/angular/angular.min.js:34:13)
at d (http://localhost/sw/selfservice/bower_components/angular/angular.min.js:34:230)
at Object.instantiate (http://localhost/sw/selfservice/bower_components/angular/angular.min.js:34:394)
at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:66:112
at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:53:14 angular.js:9778
(anonymous function) angular.js:9778
(anonymous function) angular.js:7216
h.$apply angular.js:12512
(anonymous function) angular.js:1382
d angular.js:3869
$b.c angular.js:1380
$b angular.js:1394
Wc angular.js:1307
(anonymous function) angular.js:21459
a angular.js:2509
(anonymous function) angular.js:2780
q angular.js:330
c
Ce sont tous les fichiers que j'ai dans mon application actuellement
app.JS
//Initialize angular module include route dependencies
var app = angular.module("selfservice", ['ngRoute']);
app.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl:"partials/login.html",
controller:"login"
});
});
app.factory('getSettings', ['$http', '$q', function($http, $q) {
return function (type) {
var q = $q.defer();
$http.get('models/settings.json').success(function (data) {
q.resolve(function() {
var settings = jQuery.parseJSON(data);
return settings[type];
});
});
return q.promise;
};
}]);
Et voici comment je me sers de ce service dans mon contrôleur
controller.JS
app.controller("globalControl", ['$scope','getSettings', function ($scope,getSettings) {
var loadSettings = getSettings('global');
loadSettings.then(function(val) {
$scope.settings = val;
});
}]);
app.controller("login", ['$scope', function ($scope) {
return ""
}]);
directives.js
app.directive('watchResize', function(){
return {
restrict: 'M',
link: function(scope, elem, attr) {
scope.spacer = (window.innerWidth < 1025) ? '' : 'large-3';
scope.button = (window.innerWidth < 1025) ? '' : 'large-6';
angular.element(window).on('resize', function(){
scope.$apply(function(){
scope.spacer = (window.innerWidth < 1025) ? '' : 'large-3';
scope.button = (window.innerWidth < 1025) ? '' : 'large-6';
});
});
}
};
});
Et si c'est pertinent voici le code HTML
<html class="no-js" lang="en" ng-app="selfservice" ng-controller="globalControl">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{settings.title}}</title>
<link rel="stylesheet" href="css/app.css" />
<script src="bower_components/modernizr/modernizr.js"></script>
<script src="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-route/angular-route.min.js"></script>
<script src="bower_components/jquery/dist/jquery.min.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/directives.js"></script>
</head>
<body>
<div id="template">
<header id="header">
<img src="{{settings.logo}}" alt="{{settings.logoDescription}}"/>
</header>
<div id="view">
<ng-view></ng-view>
</div>
</div>
<script src="bower_components/foundation/js/foundation.min.js"></script>
<script>
//initialize foundation
$(document).foundation();
</script>
</body>
</html>
Quelqu'un peut me pointer dans la bonne direction? J'ai fait de mon mieux pour suivre la documentation, et en regardant à travers de SORTE que la plupart des questions connexes sont beaucoup plus en profondeur, et de plus en plus difficile pour moi de comprendre. C'est ma première fois de la création d'un service.
- L'erreur est de fournir vous avec l'inconnu fournisseurs de nom? Il y a généralement une valeur de chaîne dans l'erreur.
- Dans votre console, vous devez être en mesure de cliquer sur l'inconnu fournisseur de message d'erreur, qui vous mènera à une Angulaires page vous donnant plus d'informations sur l'erreur. Il pourrait être utile pour vous de poster cette info dans votre question.
- Désolé de ne pas avoir tous les détails au début, j'essayais de garder la question concise, cependant j'ai maintenant fourni tous les détails que j'ai sur la question
- u peut marquer si le problème est résolu ?
- Pour ceux qui viennent sur ce problème (le premier dans Google), cette réponse à une question similaire il fixe pour moi: stackoverflow.com/a/25193243/556006
Vous devez vous connecter pour publier un commentaire.
Angulaire de votre module doit être initialisé correctement. L'objet global
app
doit être défini et initialisé correctement pour injecter le service.Veuillez voir ci-dessous un exemple de code de référence:
app.js
Exemple de code HTML devrait être comme ceci:
Veuillez noter que le contrôleur n'est pas contraignant à une balise HTML, mais à la balise body. Aussi, s'il vous plaît essayez d'inclure vos scripts personnalisés à la fin de la page HTML que c'est une pratique standard à suivre pour des raisons de performances.
J'espère que cela va résoudre votre problème d'injection.
['$routeProvider',
était manquant entreapp.config
etfunction
aussi l'un des motifs populaires peut-être que vous manquez d'inclure le service de fichier dans votre page
vous devez déclarer TOUS vos dépendances OU aucun et vous avez oublié de déclarer q$.
edit:
controller.js : connectez-vous, ne pas revenir ""
Cette erreur est également visible lorsque l'on accidntally injecte $portée dans leur usine:
Passé quelques heures à essayer de résoudre le même. C'est la façon dont je l'ai fait:
app.js:
CustomServices est un nouveau module que j'ai créé et placé dans un fichier séparé appelé services.js
_Layout.cshtml:
services.js:
app.js
Vous devez lier votre service pour votre nouveau module dans l'services.js fichier ET bien sûr, vous devez utiliser ce nouveau module dans la création de votre application principale du module (app.js) ET également déclarer l'utilisation du service dans le contrôleur que vous souhaitez utiliser.
Je recevais ce problème et il s'est avéré que j'avais inclus dans mon contrôleur à la fois dans l'interface utilisateur.routeur et dans le modèle html comme dans
et
Veuillez inclure", à la fois Contrôleur et le module(s) où le contrôleur et les fonctions appelées dans le Contrôleur.
@ user2310334
J'ai juste essayé de cela, un exemple TRÈS simple:
Fichier HTML
Le fichier javascript:
Et il fonctionne. L'essayer.
Assurez-vous que vous chargez contrôleur à l'extérieur
app.config
. Le code suivant peut provoquer cette erreur:Pour corriger cette erreur, nous devons aller de l'AuthCtrl à à l'extérieur
app.config
:Dans mon cas, j'ai ajouté un nouveau service (fichier) pour mon application. Que nouveau service est injecté dans un contrôleur existant. Je n'ai pas manquer les nouveaux services de l'injection de dépendances dans le contrôleur existant et de ne pas déclarer mon application module de pas plus d'un endroit. La même exception est levée lorsque je ré-exécuter mon application web et mon cache du navigateur n'est pas réinitialisé avec un nouveau service fichier des codes. J'ai simplement actualisé mon navigateur pour obtenir ce nouveau service fichier de cache du navigateur, et le problème a disparu.
Puisque c'est la première Stackoverflow question qui s'affiche sur Google lors de la recherche pour
Error: $injector:unpr Unknown Provider
je vais ajouter ici.Assurez-vous que dans votre index.html tous les modules/dépendances ne sont pas en cours de chargement après ils sont nécessaires.
Par exemple dans mon code
customFactory.factory.js
commence comme ceci:Cependant l'index.html ressemblait à ceci:
Où il devrait l'ai vraiment regardé comme ceci:
Depuis
customFactory.factory.js
est déclaré dans le cadre demodule1
, il doit être chargé avantcustomFactory
Lorsque vous êtes à l'aide de l'interface utilisateur-routeur, vous ne devez pas utiliser ng-controller n'importe où. Vos contrôleurs sont automatiquement instanciés pour une ui-view lorsque leurs états appropriés sont activés.