我已经使用yeoman
的generator-angular
构建了一个应用程序。
我添加了我的代码,并注释掉了yeoman自动生成的代码,以供参考。
当我运行grunt serve
时,一切正常,但是当我构建代码(minify + concat + uglify)时,即使我的所有依赖项都已正常加载且无当然,它们并不依赖于我的应用程序。
这是我的vendor.js
构建块在我的scripts.js
文件中的样子:
<!-- 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 -->
注意:
index.html
和app.templates.js
是我编写和使用的独立模块,不是主应用程序模块的一部分。这是我的
app.envConfig.js
代码:angular
.module('my-app', [
'ngAnimate',
'ngAria',
'ngCookies',
'ngResource',
'ngTagsInput',
//'ngRoute',
'ngSanitize',
'ngTouch',
'ui.router',
'ui.bootstrap',
'my.templates',
'envConfig'
]);
我遇到了this答案,但看起来我的代码还可以。
我究竟做错了什么?
最佳答案
当grunt使用grunt serve
为文件提供服务时,它将从其为实时服务器提供的服务中删除所有注释的代码(html / css / js),但是,当grunt构建时,事实证明它将首先注入所需的模块构建,即使它们被注释掉了(如果它们在构建块中)。
即使已注释掉,连接过程也会在main.js
模块之前插入about.js
和app.js
控制器代码。
因此,事实证明main.js
和about.js
控制器将在创建主应用程序模块之前加载,从而引发有关其不可用的错误。
您应该完全删除注释行,或者将其移出构建块。