在MVC中构建一个站点,包括布局文件中的jQuery,如下所示:
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title</title>
@Scripts.Render("~/bundles/jquery")
@Styles.Render("~/Content/css")
</head>
<body>
<!-- content -->
</body>
</html>
JQuery通过nuget引用并捆绑如下:
public class BundleConfig
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-ui.min.js",
"~/Scripts/stickyfill.js"));
}
这在Visual Studio中本地运行本地工作正常。
当我部署到IIS并尝试运行该网站时,我遇到了可怕的Uncaught ReferenceError: jQuery is not defined
错误。
我检查的第一件事是jQuery包可以通过部署页面试图使用的地址获得:
/bundles/jquery?v=[a token]
它是什么。您甚至可以在Chrome开发者工具的捆绑包中看到它。值得注意的是,通过带有令牌的相同机制部署的css工作正常。
我也按照问题JQuery - $ is not defined的答案进行了解决,无论是取消还是尝试过,都无济于事。
我唯一能想到的是它在jQuery(document).ready()
的初始调用之前没有加载 - 这就是我将这个包移到<head>
标签的原因。但这没有用,我不知道还能做些什么来减缓或等待页面加载。
这究竟是什么呢?
编辑:Somone要求渲染页面的负责人:
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>[the title]</title>
<script src="/bundles/jquery?v=[a token]"></script>
<link href="/Content/css?v=[a token]" rel="stylesheet"/>
</head>
答案 0 :(得分:1)
try this :
public class BundleConfig
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-1.8.2.min.js",
"~/Scripts/jquery-ui.min.js",
"~/Scripts/stickyfill.js"));
}