JQuery - 在本地工作但$未定义,但仅在已部署的站点上

时间:2016-05-13 15:24:37

标签: javascript jquery asp.net-mvc

在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>

1 个答案:

答案 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"));
}