Shahab
Shahab

Reputation: 190

Angularjs $injection::unpr error

I am trying to inject my service, but I keep getting unpr error. I followed the angularjs doc, but it didn't seem to solve it. I am at a loss for why this error keeps coming up.


My Service

(function(){
'use strict';

angular
    .module('omicron.projects.services')
    .factory('Projects', Projects);

Projects.$inject = ['$resource', '$scope'];

/**
 *
 * @param $resource
 * @constructor
 */
function Projects($resource){
    return $resource('/api/projects/:userid', {}, {
        get: {method: 'GET'},
        query: {method: 'GET'},
        update: {method: 'PUT'},
        save: {method: 'POST'},
        delete: {method: 'DELETE'}
    },{
        stripTrailingSlashed: false
    });
}

})();

My Controller, that call the Service

(function() {
'use strict';

angular
    .module('omicron.projects.controllers')
    .controller('ProjectController', ProjectController);

ProjectController.$inject = ['$scope', 'Projects'];

function ProjectController($scope, Projects) {
    var vm = this;

     vm.projects = Projects.get({userid: $scope.user}, function(){
        console.log(projects);
    });
}

})();

My Module Definitions

    /**
 * Created by shahab on 15-09-03.
 */
(function(){
'use strict';

  angular
   .module('omicron.projects', [
       'omicron.projects.controllers',
       'omicron.projects.directives',
       'omicron.projects.services'
   ]);


angular
    .module('omicron.projects.services', ['ngCookies', 'ngResource']);

angular
    .module('omicron.projects.controllers', []);

angular
    .module('omicron.projects.directives', []);

})();

My Error:

Error: [$injector:unpr] Unknown provider: $resourceProvider <- $resource <- Projects

Upvotes: 1

Views: 133

Answers (1)

Pankaj Parkar
Pankaj Parkar

Reputation: 136184

Factory can't have access to scope

Projects.$inject = ['$resource', '$scope']; //remove scope from here

Should be

Projects.$inject = ['$resource']; 

Additionally you need to make sure you are added angular-resource.js library and ngResource module in your app main module omicron.projects

You should have something like below in your app.js

angular.module('omicron.projects', [
     'omicron.projects.services', 
     'omicron.projects.controllers', 
     'omicron.projects.directives', 
     'ngResource'
])

Upvotes: 2

Related Questions