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

App module is not available, misspelled or forgot to load - after grunt build

本文关键字:加载 之后 忘记 构建 模块 错误 应用程序      更新时间:2023-09-26

我使用yeomangenerator-angular构建了一个应用程序。

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

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

这是我的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.jsapp.envConfig.js是我编写和使用的独立模块,不是主应用程序模块的一部分。

这是我app.js代码:

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

我遇到了这个答案,但看起来我的代码还可以。

我做错了什么?

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

串联过程将在app.js模块之前插入main.jsabout.js控制器代码,即使它被注释掉了。

因此,事实证明,main.js & about.js 控制器将在创建主应用程序 moudle 之前加载,从而抛出有关它不可用的错误。

您应该完全删除注释行或将它们放在构建块之外。