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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由于以下原因无法实例化模块dataAccessService:错误:[$ injector:nomod]相关的知识,希望对你有一定的参考价值。

浏览器抛出这个错误未捕获错误:[$ 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)
}
答案

问题是你在这里添加了不存在的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

以上是关于由于以下原因无法实例化模块dataAccessService:错误:[$ injector:nomod]的主要内容,如果未能解决你的问题,请参考以下文章

无法实例化模块ngMaterial

错误:[$injector:unpr] 未知提供者:$routeProvider,无法实例化模块 myApp,原因是

无法实例化模块 ngMaterial

无法在客户端应用程序中实例化服务

AngularJS Jasmine 测试失败:无法实例化模块

使用 malloc() 分配的指针实例化一个类 [重复]