无法识别捆绑的脚本/css
Posted
技术标签:
【中文标题】无法识别捆绑的脚本/css【英文标题】:Bundled scripts/css are not being recognized 【发布时间】: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
我做错了什么?
【问题讨论】:
不要手动添加文件并使用捆绑包 - 删除所有<script src="...
代码。
@StephenMuecke 谢谢,我两个都没有,我不小心复制成这样了...
您是否在复制主视图中的任何内容?
@StephenMuecke 不,我仔细检查。
您是否检查了浏览器工具中的源选项卡以查看它们是否已加载。
【参考方案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) 方法之后并检查以上是关于无法识别捆绑的脚本/css的主要内容,如果未能解决你的问题,请参考以下文章
Capistrano 3:运行自定义 shell 命令时无法识别捆绑器