由于以下原因,无法实例化模块dataAccessService:错误:[$ injector:nomod]

时间:2019-03-26 15:11:41

标签: angularjs typescript

浏览器向我抛出此错误未捕获的错误:[$ 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)
}

1 个答案:

答案 0 :(得分:0)

问题是您在这里的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