又一个'未知提供者'用于AngularJS服务

Yet another 'Unknown provider' for an AngularJS service

本文关键字:AngularJS 服务 用于 未知 又一个 提供者      更新时间:2023-09-26

我其实不喜欢做那个人,但我一直在忍受这个问题已经存在好几天了。我把这三个文件作为a的一部分更大的angularjs应用。我连这个基本的测验都做不好通过(或甚至通过)我一直在比较项目中的文件,我在网上读过(尝试了人们建议的所有方法)。我有甚至有几次从头开始编写文件。我可能做不到看到我的错误。我想这更容易发现(马上)

我很感激你的帮助。

gulp/karma的输出

PhantomJS 2.1.1 (Linux 0.0.0) SiteDescriptionService the service should be defined FAILED
    Error: [$injector:unpr] Unknown provider: SiteDescriptionServiceProvider <- SiteDescriptionService
    http://errors.angularjs.org/1.5.8/$injector/unpr?p0=SiteDescriptionServiceProvider%20%3C-%20SiteDescriptionService (line 4511)
    bower_components/angular/angular.js:4511:86
    getService@bower_components/angular/angular.js:4664:46
    bower_components/angular/angular.js:4516:48
    getService@bower_components/angular/angular.js:4664:46
    injectionArgs@bower_components/angular/angular.js:4688:68
    invoke@bower_components/angular/angular.js:4710:31
    workFn@bower_components/angular-mocks/angular-mocks.js:3085:26
    loaded@http://localhost:8080/context.js:151:17
    inject@bower_components/angular-mocks/angular-mocks.js:3051:28
    app/service/sitedescriptor-service-test.js:10:19
    app/service/sitedescriptor-service-test.js:4:13
    global code@app/service/sitedescriptor-service-test.js:1:9
    Expected undefined to be truthy.
    app/service/sitedescriptor-service-test.js:17:32
    loaded@http://localhost:8080/context.js:151:17

模块声明

(function(){
'use strict';
angular.module('application.service', []);
})();

服务本身

(function () {
  angular.module('application.service')
    .service('SiteDescriptorService',
         ['$http', '$q', function ($http, $q) {
         var lastRequestFailed = true,
             promise,
             items = [];
         return {
             name: 'SiteDescriptorService',
             getItems: function () {
             if (!promise || lastRequestFailed) {
                 promise = $http.get('site.json').then(
                 function (response) {
                     lastRequestFailed = false;
                     items = response.data;
                     return items;
                 }, function (response) {  // error
                     lastRequestFailed = true;
                     return $q.reject(response);
                 });
             }
             return promise;
             }
         };
         }]
        );
})();

和测试

describe('SiteDescriptionService', function() {
'use strict';
describe('the service', function() {
    var service, httpBackend;
    beforeEach(module('application.service'));
    beforeEach(inject(function(_SiteDescriptionService_, $httpBackend) {
    service = _SiteDescriptionService_;
    httpBackend = $httpBackend;
    console.log(service);
    }));
    it('should be defined', function() {
    expect(service).toBeTruthy();
    });
});
});

干杯垫

看起来你只是在注入依赖时使用了不正确的名称,应该是'SiteDescriptorService'而不是'SiteDescriptionService'