【问题标题】:AngularJS Bundle Config failing (angular-sanitize.js)AngularJS 捆绑配置失败(angular-sanitize.js)
【发布时间】:2018-10-19 20:20:44
【问题描述】:

System.Web.HttpException:找不到路径“/bundles/angular/angular-resource.min.js.map”的控制器或未实现 IController。

在我的应用程序中的每个页面加载时都会引发此错误。由于我没有在 Debug 中捆绑/缩小,这只发生在 QA/Dev 和生产中

我试过这个:angular resource is mistaken as C# MVC controller(比如将 .min 脚本标签添加到 index.cshtml 内嵌,以及其他建议)

我读过这个:MSDN: Bundling and Minification

以下是相关代码:

BundleConfig.cs

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
#if (!DEBUG)
        BundleTable.EnableOptimizations = true;
        bundles.UseCdn = true;
#endif

        bundles.Add(new ScriptBundle("~/bundles/jquery/script")
            .Include(
                "~/Scripts/jquery-{version}.js",
                "~/Scripts/jquery-ui-{version}.js",
                "~/Scripts/jquery.validate*",
                "~/Scripts/jquery.signalR-{version}.js"
                )
            );

        bundles.Add(new ScriptBundle("~/bundles/angular/script")
            .Include(
                "~/Scripts/angular.js",
                "~/Scripts/ui-bootstrap-modal.js",
                "~/Scripts/angular-animate.js",
                "~/Scripts/angular-mocks.js",
                "~/Scripts/angular-route.js",
                "~/Scripts/angular-resource.js",
                "~/Scripts/angular-sanitize.js",
                "~/Scripts/angular-datepicker.js"
                )
            );

        bundles.Add(new ScriptBundle("~/bundles/application/script")
            .IncludeDirectory("~/app", "*.js", true)
            );

        //Markup removed for clarity.
    }
}

index.cshtml

@Scripts.Render("~/bundles/jquery/script")
@Scripts.Render("~/bundles/angular/script")

@Scripts.Render("~/bundles/application/script")

//Markup removed for clarity.

目录路径

(Project.Web)/Scripts/angular-{whatever}.js
(Project.Web)/Scripts/angular-{whatever}.min.js
(Project.Web)/Scripts/angular-{whatever}.min.js.map

这当然包括 angular-sanitize

我也尝试过删除和包含

//# sourceMappingURL=angular-sanitize.min.js.map

来自 angular-sanitize.min.js

如果您需要更多信息 - 请发表评论!谢谢

【问题讨论】:

    标签: c# angularjs


    【解决方案1】:

    更改 BundleCollection.Add() 方法的 virtualPath 参数解决了这个问题。

    改变了这个:

        bundles.Add(new ScriptBundle("~/bundles/angular/script")
            .Include(
                "~/Scripts/angular.js",
                "~/Scripts/ui-bootstrap-modal.js",
                "~/Scripts/angular-animate.js",
                "~/Scripts/angular-mocks.js",
                "~/Scripts/angular-route.js",
                "~/Scripts/angular-resource.js",
                "~/Scripts/angular-sanitize.js",
                "~/Scripts/angular-datepicker.js"
                )
            );
    
        @Scripts.Render("~/bundles/angular/script")
    

    到这里:

        bundles.Add(new ScriptBundle("~/Scripts/angular")
            .Include(
                "~/Scripts/angular.js",
                "~/Scripts/ui-bootstrap-modal.js",
                "~/Scripts/angular-animate.js",
                "~/Scripts/angular-mocks.js",
                "~/Scripts/angular-route.js",
                "~/Scripts/angular-resource.js",
                "~/Scripts/angular-sanitize.js",
                "~/Scripts/angular-datepicker.js"
                )
            );
    
        @Scripts.Render("~/Scripts/angular")
    

    如果有人了解 BundleCollection 的复杂性,请告诉我们为什么这个解决方案有效。

    编辑

    如果你只是提取 angular-sanitize,像这样:

        bundles.Add(new ScriptBundle("~/Scripts/angular")
            .Include(
                "~/Scripts/angular-sanitize.js"
                )
            );
    

    那么错误就变成了

    System.Web.HttpException:路径的控制器 '/bundles/angular-resource.min.js.map' 找不到或没有 实现 IController。

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多