拥有2项服务的未知提供商

时间:2017-06-01 14:32:03

标签: javascript angularjs

我的节点应用程序出现了着名的Unknown provider错误,无法找出原因。

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){ ... }

错误详情:

  

错误:[$ injector:unpr]未知提供者:stationserviceProvider< -   stationservice< - addCtrl

2 个答案:

答案 0 :(得分:2)

看起来您没有正确使用模块。使用单个模块名称并重用该模块。如果省略第二组参数,则可以按名称再次检索它。

您可以创建多个模块,但这通常是在您希望将多个项目组合在一起作为一项功能时完成的。

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){ ... }]

答案 1 :(得分:0)

修改您的代码,如下所示。我认为这里有一些混淆。如果可以将它们组合在一起,为什么还需要为应用程序创建两个模块。

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){ ... }

请参阅Angular JS官方文档https://docs.angularjs.org/guide/di以获取更多信息。