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

JQuery - works locally but $ is not defined but only on deployed site

本文关键字:部署 定义 站点 未定义 工作 JQuery-      更新时间:2023-09-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>

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-$没有定义的问题的答案,要么省略了它们,要么尝试了它们,但都无济于事。

我唯一能想到的是,它在对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>

试试这个:

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