应用程序模块不可用,拼写错误或忘记加载 - 在grunt构建之后

时间:2016-03-09 08:52:12

标签: javascript angularjs gruntjs yeoman yeoman-generator-angular

我使用yeoman generator-angular构建了一个应用。

我已经添加了我的代码并注释掉了自动生成的代码,以供参考。

当我运行grunt serve时,一切正常,但是当我构建代码(minify + concat + uglify)时,vendor.js文件会抛出一个错误,说我的主app模块不可用,即使所有我的依赖项加载得很好,当然它们都不依赖于我的应用程序。

这就是我的scripts.js构建块在我的index.html文件中的样子:

<!-- build:js({.tmp,app}) scripts/scripts.js -->
<!--<script src="scripts/controllers/main.js"></script>-->
<!--<script src="scripts/controllers/about.js"></script>-->
<script src="app.templates.js"></script>
<script src="app.envConfig.js"></script>
<script src="app.js"></script>
<script src="components/auth/auth.srv.js"></script>
<script src="app.routes.js"></script>
<!-- endbuild -->

注意:app.templates.js&amp; app.envConfig.js是我编写的分离模块&amp;使用,而不是主app模块的一部分。

这是我的app.js代码:

angular
  .module('my-app', [
    'ngAnimate',
    'ngAria',
    'ngCookies',
    'ngResource',
    'ngTagsInput',
    //'ngRoute',
    'ngSanitize',
    'ngTouch',
    'ui.router',
    'ui.bootstrap',
    'my.templates',
    'envConfig'
]);

我遇到this回答,但看起来我的代码还可以。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

当grunt使用grunt serve提供文件时,它会将所有注释代码(html / css / js)从它所服务的内容中删除到实时服务器,但是,当grunt构建时,事实证明它将首先注入它需要构建的模块,如果它们位于构建块中,即使是已注释掉的模块。

连接过程将插入main.js&amp; about.js控制器在app.js模块之前编码,即使它被注释掉了。

事实证明main.js&amp; about.js控制器将加载 BEFORE 创建主应用程序模块,从而引发有关它无法使用的错误。

您应该完全删除注释行,或者将它们带到构建块之外。