[angularjs] 각도 js 알 수없는 공급자

내 REST API에 맞게 mongolab 예제를 “사용자 정의”하려고합니다. 이제이 오류가 발생하고 내가 뭘 잘못했는지 잘 모르겠습니다.

Error: Unknown provider: ProductProvider <- Product
    at Error (unknown source)
    at http://localhost:3000/js/vendor/angular.min.js:28:395
    at Object.c [as get] (http://localhost:3000/js/vendor/angular.min.js:26:180)
    at http://localhost:3000/js/vendor/angular.min.js:28:476
    at c (http://localhost:3000/js/vendor/angular.min.js:26:180)
    at d (http://localhost:3000/js/vendor/angular.min.js:26:314)

이것은 내 컨트롤러입니다.

function ProductListCtrl($scope, Product) {
  $scope.products = Product.query();
}

그리고 이것은 모듈입니다 :

angular.module('productServices', ['ngResource']).
    factory('Product', ['$resource', function($resource){
      var Product = $resource('/api/products/:id', {  }, {
        update: { method: 'PUT' }
      });

      return Product;
    }]);



답변

샘플 jsFiddle에 복사하여 붙여 넣을 때 코드 자체가 실제로 작동합니다 (전화 자체는 제외) : http://jsfiddle.net/VGaWD/

더 완전한 예제를 보지 않고 무슨 일이 일어나고 있는지 말하기는 어렵지만 위의 jsFiddle이 도움이되기를 바랍니다. 내가 의심하는 것은 ‘productServices’모듈로 앱을 초기화하지 않는다는 것 입니다. 동일한 오류가 발생하면 다른 jsFiddle에서 볼 수 있습니다 : http://jsfiddle.net/a69nX/1/

당신이 AngularJS와 함께 작동하도록 계획하고 MongoLab 경우 나는 $ 자원 및 MongoLab에 대한 기존의 어댑터를 사용하는 것이 좋습니다 것입니다 : https://github.com/pkozlowski-opensource/angularjs-mongolab
그것은 당신이 MongoLab 작업을 고통의 정도 완화 http://jsfiddle.net/pkozlowski_opensource/DP4Rh/
면책 조항 여기에서 실제로 볼 수 있습니다 ! 이 어댑터 (AngularJS 예제를 기반으로 작성)를 유지하고 있으므로 분명히 여기에 편향되어 있습니다.


답변

팩토리 정의에 잘못된 매개 변수를 전달했기 때문에 해당 오류가 발생했습니다. 나는했다 :

myModule.factory('myService', function($scope, $http)...

$scope팩토리 정의를 제거 하고 팩토리 정의를 다음과 같이 변경 했을 때 작동했습니다 .

myModule.factory('myService', function( $http)...

주입해야 할 경우 다음을 $scope사용하십시오.

myModule.factory('myService', function($rootScope, $http)...


답변

방금 비슷한 문제가있었습니다. 오류는 질문에서 동일하게 말했다 .pkozlowski.opensource와 Ben G의 대답으로 문제를 해결하려고 시도했지만 정답과 좋은 대답입니다.

내 문제는 실제로 같은 오류로 다릅니다.

내 HTML 코드에서 다음과 같이 초기화했습니다 …

<html ng-app>

조금 더 아래로 다음과 같이하려고했습니다.

<div id="cartView" ng-app="myApp" ng-controller="CartCtrl">

첫 번째 것을 제거했습니다 … 그런 다음 작동했습니다 … 분명히 ng-app를 두 번 이상 초기화 할 수 없습니다. 그럴 수 있지.

나는 첫 번째 “ng-app”에 대해 완전히 잊어 버렸고 완전히 좌절했습니다. 언젠가 누군가를 도울 것입니다 …


답변

메인 app.js에 의존하는 서비스가 메인에 포함되어 있는지 확인하십시오 . 예를 들면 다음과 같습니다.

/* App Module */
angular.module('myApp', ['productServices']).
.....


답변

pkozlowski의 대답은 정확하지만 다른 사람에게 이런 일이 발생할 경우 같은 모듈을 실수로 두 번 만든 후에도 같은 오류가 발생했습니다. 두 번째 정의는 첫 번째 공급자를 재정의했습니다.

내가함으로써 모듈을 만들었습니다.

angular.module('MyService'...
).factory(...);

같은 파일에서 조금 더 아래로 내려갑니다.

angular.module('MyService'...
).value('version','0.1');

이를 수행하는 올바른 방법은 다음과 같습니다.

angular.module('MyService'...
).factory(...).value('version','0.1');


답변

제 경우에는 새로운 제공자를 정의했습니다. xyz

angular.module('test')
.provider('xyz', function () {
    ....
});

위의 공급자를 구성 할 때 Provider문자열을 추가하여-> xyz될 것 xyzProvider입니다.

전의:

angular.module('App', ['test'])
.config(function (xyzProvider) {
     // do something with xyzProvider....
});

‘Provider’문자열없이 위의 공급자를 주입하면 OP에서도 비슷한 오류가 발생합니다.


답변

JS 파일 끝에서 내가 가지고 있던 팩토리 기능을 닫습니다.

});

대신에

}());