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

标签 javascript angularjs gruntjs yeoman yeoman-generator-angular

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

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

当我运行 gruntserve 时,一切正常,但是当我构建代码(minify + concat + uglify)时,vendor.js 文件抛出一个错误,指出我的 main应用程序模块不可用,即使我的所有依赖项均已正常加载,并且它们当然都不依赖于我的应用程序。

这就是我的 scripts.js 构建 block 在 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'
]);

我遇到了this回答但看起来我的代码没问题。

我做错了什么?

最佳答案

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

串联过程将在 app.js 模块之前插入 main.jsabout.js Controller 代码,即使它已被注释出来。

事实证明,main.jsabout.js Controller 将在创建主应用程序模块之前加载,从而引发关于它不可用的错误。

您应该完全删除注释行或将它们移出构建 block 。

关于javascript - 应用程序模块不可用、拼写错误或忘记加载 - 在 grunt 构建之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35886897/

相关文章:

javascript - Angular JS - 如何验证数字输入中的位数

javascript - grunt 任务完成后如何打印文本?

gruntjs - 尝试运行 Grunt 时出现 Foundation 错误 13

javascript - Angular : ng-repeat depending on state of other object

angularjs - 如何重定向$ routeProvider.otherwise()保持给定的查询参数

javascript - 如何在 12 小时格式 Ionic 3 上获得预选时间

javascript - 单击更新 2 个 div,突出显示所选选项,jquery

javascript - Visual Studio 2015 中的 Grunt watch 任务绑定(bind)

javascript - add方法不是在IE中添加下拉选项

javascript - Jstree 上下文菜单抑制 select_node 右键单击​​上的更改事件