ffritz
ffritz

Reputation: 2261

Unknown provider with 2 Services

I am getting the famous Unknown provider error with my node app and can't figure out why.

app.js

var app = angular.module('citigraph', ['addCtrl', 'mygservice', 'stationservice']);

addCtrl.js

var addCtrl = angular.module('addCtrl', ['mygservice', 'rzModule', 'chart.js', 'stationservice']);
addCtrl.controller('addCtrl', function($scope, $http, $rootScope, gservice, stationservice){ ... }

stationservice.js

angular.module('stationservice', []).service('mystationservice', function($http){ ... }

The error in detail:

Error: [$injector:unpr] Unknown provider: stationserviceProvider <- stationservice <- addCtrl

Upvotes: 2

Views: 526

Answers (2)

Igor
Igor

Reputation: 62298

It looks like you are not using modules correctly. Use a single module name and reuse that module. You can retrieve it again by name if you omit the 2nd set of parameters.

You could create multiple modules but that is generally done when you want to group multiple items together as a piece of functionality.

app.js

// add common external dependencies to this module to the [] array
var app = angular.module('citigraph', []);

addCtrl.js

// add controller to same module
var app = angular.module('citigraph');
app.controller('addCtrl', ['$scope', '$http', '$rootScope', 'gservice', 'stationservice', function($scope, $http, $rootScope, gservice, stationservice){ ... }]

stationservice.js

// add service to same module
angular.module('citigraph').service('mystationservice', ['$http', function($http){ ... }]

Upvotes: 2

user3252885
user3252885

Reputation:

Modify your code as below. I think there is some mix up here. Why do you need create two modules for application if they can be combined together.

app.js

var app = angular.module('citigraph', []);

addCtrl.js

 var app = angular.module('addCtrl');
    app.controller('addCtrl', function($scope, $http, $rootScope, gservice, stationservice){ ... }

stationservice.js

angular.module('citigraph').service('mystationservice', function($http){ ... }

Please refer Angular JS official documentation https://docs.angularjs.org/guide/di for more information.

Upvotes: 0

Related Questions