【问题标题】:Failed to instantiate module dataAccessService due to: Error: [$injector:nomod]由于以下原因无法实例化模块 dataAccessService:错误:[$injector:nomod]
【发布时间】:2019-08-17 00:49:23
【问题描述】:

浏览器向我抛出此错误未捕获错误:[$injector:modulerr] 无法实例化模块应用程序,原因是: 错误:[$injector:modulerr] 无法实例化模块 dataAccessService 由于: 错误:[$injector:nomod] 模块“dataAccessService”不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。

这是什么原因造成的?

我尝试过切换脚本文件等,但没有一个能成功。路线确实有效,但内部的服务不会

module app { 
    const app = angular.module("app", ["ngRoute","dataAccessService"]);
    app.config(routeConfig);

    // routeConfig.$inject["$routeProvider"];

    function routeConfig($routeProvider) {
        $routeProvider
            .when('/drivers', {
                templateUrl: './src/pages/drivers.html',
                controller: 'DriversListCtrl'
            })
            // .when('/teams', {
            //     templateUrl: './src/pages/teams.html',
            //     controller: 'teamsController'
            // })  
            // .otherwise({
            //     redirect:'/drivers'
            // })
    }
}

和我的服务

module app.service {

    export interface IDataAccessService {
        getApi():ng.IPromise<IDriver>;
    }

    export interface IDriver {
        name:string;
        team:string;
        points:number;
    }

    export class DataAccessService implements IDataAccessService {


        static $inject = ['$http'];
        constructor(private $http: ng.IHttpService) {

        }
        getApi():ng.IPromise<IDriver>{
            return this.$http.get('https://ergast.com/api/f1/2013/driverStandings.json')
            .then((response:ng.IHttpPromiseCallbackArg<IDriver>):IDriver=>{ 
                return response.data;
            })
        }
    }

    angular.module("app",[]).service("dataAccessService", DataAccessService)
}

最后是控制器

module app.driversList {
    export interface IDriversList {
        fullName:any;
    }

    export class DriversListCtrl implements IDriversList {
        fullName:any;

        static $inject = ["dataAcessService"];
        constructor(private dataAcessService:app.service.DataAccessService){

            this.dataAcessService.getApi().then((data:app.service.IDriver):void=>{
                this.fullName = data;
            })
        }



    }

    angular.module("app",[]).controller("DriversListCtrl", DriversListCtrl)
}

【问题讨论】:

    标签: angularjs typescript


    【解决方案1】:

    问题是您在这里添加了不存在的dataAccessService 模块到app 模块依赖项:

    const app = angular.module("app", ["ngRoute","dataAccessService"]);
                                                          \
                                                           there is no such module
    

    您应该使用angular.module("dataAccessService", []) 定义一个模块并在其中注册您的控制器和服务,或者将其从app 依赖项中删除:

    const app = angular.module("app", ["ngRoute"]);
    

    此外,您的控制器中似乎有错字,这也会导致异常:

                              should be Access, not Acess
                             /
    static $inject = ["dataAcessService"];
    constructor(private dataAcessService:app.service.DataAccessService){
                              \
                               should be Access, not Acess
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-07
      • 2018-09-29
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2016-05-23
      • 2022-08-22
      • 1970-01-01
      相关资源
      最近更新 更多