【问题标题】:Bundled scripts/css are not being recognized无法识别捆绑的脚本/css
【发布时间】:2017-08-15 19:11:00
【问题描述】:

我对捆绑和缩小非常陌生,我第一次尝试在我的 MVC 项目中实现它。

我已经添加了一个 BundleConfig.cs 文件:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        //libs scripts
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/libs/jquery/jquery-{version}.js",
        "~/Scripts/libs/jquery/jquery-ui-{version}.js",
        "~/Scripts/libs/jquery/jquery.mask*",
        "~/Scripts/libs/jquery/jquery.validate*"));

        bundles.Add(new ScriptBundle("~/bundles/ko").Include(
        "~/Scripts/libs/ko/knockout-{version}.js"));

        //site scripts
        bundles.Add(new ScriptBundle("~/bundles/site").Include(
                    "~/Scripts/site/*.js"));

        bundles.Add(new StyleBundle("~/Content/site/").Include("~/Content/site/*.css"));
    }
}

并在 Global.asax 中添加:

BundleConfig.RegisterBundles(BundleTable.Bundles);

然后我在布局页面中渲染了脚本/css:

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/site/Fonts.css")
    @Styles.Render("~/Content/site/Site.css")
    @RenderSection("styles", required: false)

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/ko")
    @Scripts.Render("~/bundles/site")
    @RenderSection("scripts", required: false)
</head>

但这不起作用,我不断收到各种错误,表明脚本和 css 未被识别。

例如:

Uncaught ReferenceError: jQuery is not defined

我做错了什么?

【问题讨论】:

  • 不要手动添加文件并使用捆绑包 - 删除所有 &lt;script src="... 代码。
  • @StephenMuecke 谢谢,我两个都没有,我不小心复制成这样了...
  • 您是否在复制主视图中的任何内容?
  • @StephenMuecke 不,我仔细检查。
  • 您是否检查了浏览器工具中的源选项卡以查看它们是否已加载。

标签: asp.net-mvc bundling-and-minification asp.net-optimization


【解决方案1】:

根据给我这个想法的@BasantaMatia 评论,设置:

BundleTable.EnableOptimizations = true

在 Global.asax 文件中,之后:

BundleConfig.RegisterBundles(BundleTable.Bundles);

解决了这个问题。

【讨论】:

    【解决方案2】:

    看到这里你添加了所有脚本文件的 2 倍,

    您已经添加了对您的捆绑包 jquery、ko 和站点的引用。

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/ko")
    @Scripts.Render("~/bundles/site")
    

    那么就不需要再添加这些文件了。

    <script src="~/Scripts/Libs/jquery/jquery-3.1.1.min.js"></script>
    <script src="~/scripts/libs/jquery/jquery-ui-1.12.1.min.js"></script>
    <script src="~/Scripts/Libs/jquery-mask/jquery.mask.min.js"></script>
    <script src="~/Scripts/Libs/knockout/knockout-3.4.1.js"></script>
    <script src="~/Scripts/Site/Site.js"></script>
    

    【讨论】:

    • 见我上面的评论。
    • 你可以添加这一行“BundleTable.EnableOptimizations = false;”在 BundleConfig 文件中的 RegisterBundles(BundleCollection bundles) 方法之后并检查
    猜你喜欢
    • 2017-03-26
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    相关资源
    最近更新 更多