【问题标题】:grunt an angular project then it errors as Cannot find Module咕哝一个角度项目,然后它错误为找不到模块
【发布时间】:2016-05-23 17:22:13
【问题描述】:

嗨,我有一个问题 :) 我开发了一个 Angular 项目,它在我的 localhost apache 中运行良好。我将angular 1.4.3 用于前端,node.js 用于后端。现在我需要使用 Grunt 对其进行版本控制。 我做了很多配置(比如那个枫树的东西禁用了。it changes all variables names such as a,b,c from indexCounter,PersonCounter,AgencyCounter and it causes some problems.)但是每次我尝试运行时都会出错。就像 [module] 找不到。我的项目在我的本地机器上运行如果我不咕哝但在咕哝之后我将 3 个文件作为vendor.js vendor2.js and app.js。在vendor.js 我有native angular js 文件。在vendor2.js 我有plugins。最后在app.js 我有controllers。我按此顺序将它们添加到我的索引 HTML 中;

vendor.js vendor2.js app.js

你对此有什么想法吗?

【问题讨论】:

    标签: javascript angularjs node.js gruntjs concat


    【解决方案1】:

    问题:在 Angular 中,如果不使用 .$inject 或数组语法,您将无法缩小代码。

    解决方案

    对于您添加到模块中的每个控制器、指令、服务等,您必须添加一个额外的字符串数组,指定应该注入您的服务、控制器等的依赖项。

    示例

    使用$inject 属性

    function mainController(indexCounter,PersonCounter,AgencyCounter) {
        //Controller implementation
    }
    mainController.$inject=['indexCounter','PersonCounter','AgencyCounter'];
    
    angular
        .module('mymodule')
        .controller('mainController', mainController);
    

    使用数组

    var mainController;
    function controller(indexCounter,PersonCounter,AgencyCounter) {
        //Controller implementation
    }
    mainController=['indexCounter','PersonCounter','AgencyCounter', controller];
    
    angular
        .module('mymodule')
        .controller('mainController', mainController);
    

    当您没有在数组中指定依赖项时,Angular 将尝试根据其参数名称查找已注册的依赖项。例如function mainController(indexCounter) {},然后 Angular 将尝试查找名为 indexCounter 的已注册依赖项。当代码没有被缩小时,它工作得很好。但是,当缩小 indexCounter 参数名称将更改为更短的名称,例如a。并且在尝试查找未在您的应用中注册的依赖项 a 时。它将无法激活您的角度模块。

    【讨论】:

    • 非常感谢,但我已经禁用了 grunt 的该功能。现在它不会更改参数的名称。我相信有一些不同的东西。但是您的回答很棒,再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2020-12-14
    相关资源
    最近更新 更多