【问题标题】:Uncaught Error: [$injector:modulerr] Failed to instantiate module yeomanTestApp due to: Error: [$injector:unpr] Unknown provider: e未捕获的错误:[$injector:modulerr] 无法实例化模块 yeomanTestApp 由于:错误:[$injector:unpr] 未知提供者:e
【发布时间】:2017-04-22 14:39:01
【问题描述】:

我正在使用 yeoman 生成器来使用 requirejs 构建 Angular Web 应用程序。它工作正常,但是当我尝试通过 grunt 任务运行程序将所有 js 文件合并并缩小到一个文件中时,它开始给我上面提到的错误。我已经在网上研究过这个问题,常见的解决方案是我可能拼错了模块中的任何服务注入或服务不存在,我再次交叉检查了所有的拼写、引号等一切似乎都很好但我仍然'我无法解决这个问题。

这是我的 app.js 文件,其中列出了我的主要模块与依赖项。

 return angular
.module('arteciateYeomanApp', [
'arteciateYeomanApp.controllers.MainCtrl',
'arteciateYeomanApp.controllers.AboutCtrl',
'arteciateYeomanApp.services.Xhr',
'arteciateYeomanApp.services.Common',
'arteciateYeomanApp.controllers.ArtworkCtrl',
'arteciateYeomanApp.controllers.AddAccountCtrl',
'arteciateYeomanApp.controllers.AddArtgroupCtrl',
'arteciateYeomanApp.controllers.AddArtistCtrl',
'arteciateYeomanApp.controllers.AddArtworkCtrl',
'arteciateYeomanApp.controllers.AddCampaignsCtrl',
'arteciateYeomanApp.controllers.AddGenreCtrl',
'arteciateYeomanApp.controllers.AddInstitutionCtrl',
'arteciateYeomanApp.controllers.AdminSignupCtrl',
'arteciateYeomanApp.controllers.ArtistInfoCtrl',
'arteciateYeomanApp.controllers.DirectUserSignupCtrl',
'arteciateYeomanApp.controllers.ErrorCtrl',
'arteciateYeomanApp.controllers.ForgotPasswordCtrl',
'arteciateYeomanApp.controllers.GroupBuyingCtrl',
'arteciateYeomanApp.controllers.LoginCtrl',
'arteciateYeomanApp.controllers.AdminLoginCtrl',
'arteciateYeomanApp.controllers.ResetPasswordCtrl',
'arteciateYeomanApp.controllers.SignupCtrl',
'arteciateYeomanApp.controllers.UnblockUserCtrl',
'arteciateYeomanApp.controllers.UpdatePasswordCtrl',
'arteciateYeomanApp.controllers.DashboardCtrl',
'ngRoute','ngResource']).config(.....);

这是我正在运行的用于缩小 js 文件的 grunt 任务。

注册任务

grunt.registerTask('dev', ['requirejs' ]);

这里是任务运行脚本

requirejs : {
    compile : {
        options : {
            baseUrl : "<%= yeoman.app %>/scripts",
            mainConfigFile : "<%= yeoman.app %>/scripts/main.js",
            name : "main",
            out : "requireArterciate.js"
        }
    }
}

如果我在这里做错了什么,请告诉我。

【问题讨论】:

  • 不可能说出什么是 e。错误消息包含调用堆栈,这可能有助于找出导致错误的服务,但问题中省略了它。这个问题很可能是由于应用程序没有准备好进行缩小,因为服务没有正确注释。使用docs.angularjs.org/guide/di#using-strict-dependency-injection

标签: angularjs gruntjs yeoman-generator


【解决方案1】:

如果您需要缩小 angularjs 代码,请使用以下标准格式语法来定义控制器并注入依赖项。参考Dependency Injection

angular.module('test').controller('testController', testController);
testController.$inject = ['$scope', '$rootScope'];
function testController($scope, $rootScope) {};

【讨论】:

    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2016-11-16
    • 2013-08-31
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多