【发布时间】:2016-05-17 02:10:26
【问题描述】:
在 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>
通过 nuget 引用 JQuery 并像这样捆绑:
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>
【问题讨论】:
-
你能贴出
generated页面的HTML,至少是头部吗? -
那么“网络”面板在加载 jQuery 文件时会显示什么内容?
-
@imvain2 完成了 - 感谢您的关注
-
@epascarello 首先在 IP 上加载。下一个加载是 jQuery 文件,它需要 84 毫秒(主要是从服务器等待 - 这是一个测试服务器并且非常慢)并且通过绿色,状态 200。
-
那么在 bundle 文件中你看到 jQuery 了吗?
标签: javascript jquery asp.net-mvc