AngularJS github.js服务报错求助:ReferenceError: github未定义
排查AngularJS "ReferenceError: github is not defined" 错误
我帮你梳理下几个关键问题,这应该能解决你的报错:
1. 服务未注册到AngularJS模块
你写的自执行函数里定义了github服务,但没有把它注册到你的应用模块中。AngularJS无法识别未注册的服务,所以会抛出github is not defined。
解决方法:在自执行函数的末尾,把服务注册到你的模块里(替换成你实际的模块名,比如你的项目里的模块名称):
(function() { var github = function($http) { // 你的服务方法逻辑... }; // 关键:将服务注册到AngularJS模块 angular.module('yourAppModuleName').service('github', github); })();
2. 服务方法未返回Promise
你的getuser和getRepos方法里,$http.get()的异步结果没有被正确返回。$http调用返回的是Promise对象,你需要把这个Promise返回出去,这样调用服务的地方才能拿到异步数据,同时避免逻辑断层。
修正后的getuser方法:
var getuser = function(userName) { // 返回整个$http调用的Promise链 return $http.get("https://api.github.com/users/" + userName).then( function(response) { return response.data; } ); };
同理修正getRepos方法:
var getRepos = function(user1) { return $http.get(user1.repos_url).then( function(response) { return response.data; } ); };
3. 控制器中正确注入服务
确保在使用github服务的控制器里,通过依赖注入引入这个服务,而不是直接使用。比如:
angular.module('yourAppModuleName').controller('YourController', ['github', function(github) { // 在这里调用服务方法 github.getuser('someUsername').then(function(userData) { console.log('用户数据:', userData); }); }]);
按这几步修正后,应该就能解决ReferenceError的问题了。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

