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

标签 javascript angularjs gruntjs yeoman yeoman-generator-angular

我使用 yeoman 构建了一个应用程序的generator-angular .

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

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

这就是我的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.js & app.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 使用 grunt serve 提供文件时, 它从它提供给实时服务器的内容中删除所有注释代码 (html/css/js), 但是, 当 grunt 构建时, 它会首先注入(inject)它需要构建的模块, 即使是注释掉的模块, 如果它们位于构建 block 内。

连接过程将插入 main.js & about.js app.js 之前的 Controller 代码模块,即使它被注释掉了。

所以结果是main.js & about.js Controller 将加载 之前 主应用程序模块已创建,因此引发有关它不可用的错误。

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

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

相关文章:

在不使用 this 关键字的情况下在上下文中进行 javascript eval

javascript - CSS 自定义单选按钮在 IE 8 中不起作用

javascript - PHP项目的Gulp/Grunt文件夹结构与实践

node.js - 注意:新手无法在Watchify上正常使用

javascript - Angular 服务注入(inject)

javascript - Lodash _.find在参数中使用变量不起作用

javascript - 使用命名函数或将它们放在范围内

javascript - Firebase:为什么我们需要 bindTo 方法?

javascript - 如何检查指令中包含的表格的有效性?

node.js - Nuget 包有 'restore packages on build' ,什么有 bower 、咕噜声或 Node