由MVC捆绑/缩小的Angular无法加载主模块

时间:2016-01-25 18:42:23

标签: javascript angularjs asp.net-mvc minify

我有一个MVC 5应用程序捆绑我的角度应用程序,如:

   var angular = new ScriptBundle("~/App")
            .Include("~/App/app.js")
            .IncludeDirectory("~/App", "*.js", true);

        bundles.Add(angular);     

然后在加载所有其他资源之后将其呈现在头部:

(jquery, angular.min.js, other resources)
@Scripts.Render("~/App")

将我的web.config的debug属性切换为false:

    <compilation debug="false" targetFramework="4.5.2" />

我的角度应用程序的主模块将无法加载:

  

错误:[$ injector:nomod]模块'wdf'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。

在您链接到有关如何确保角度将以缩小形式加载的文档之前,请知道我已经对每个工厂,控制器,服务[您为其命名]进行了三重检查,以获得{{3}中列出的正确语法}}。我还将整个角度应用程序缩减为单个文件和单行以消除可能的其他注入错误:

(function () {
'using strict';    

var app = angular.module('wdf', []);

})();

我也一直在HTML中说明这个应用程序:

 <!DOCTYPE html>
 <html ng-app="wdf" ng-strict-di>
 ...

即使使用ng-strict-di,应用程序也可以完全不受限制地运行。我一直在和它搏斗几个小时。我可以挖掘的每个线程基本上告诉我确保我已经声明了所有模块的依赖项,但我很确定我已经考虑过了:

  1. ng-strict-di没有抓到任何我应该编码得更好的内容
  2. 我已经对每个friggin'文件进行了三次检查,以确保我遵循最佳做法进行缩小
  3. 最后,该应用程序甚至不能使用它最简单的形式

1 个答案:

答案 0 :(得分:0)

当然的儿子,我发布了,我找到了问题。

我没有查看开发人员工具,看看该网站是否正确加载了缩小的文件。它为捆绑的请求返回403。这里概述的带有样式包的解决方案也是如此。 MVC4 style bundle giving 403

总之,修复是这个改变:

FROM var angular = new ScriptBundle("~/App")

TO var angular = new ScriptBundle("~/wdf")

然后将HTML更改为:@Scripts.Render("~/wdf")

希望这可以帮助遇到问题的其他人......