未捕获的类型错误:未定义不是加载 jquery-min.js 的函数

IT技术 javascript jquery minify
2021-03-08 02:06:37

我正在构建一个普通的网页,它需要我加载大约五个 CSS 文件和十个 Javascript 文件。

  • 在 HTML 页面中分别加载它们时,我的网页加载正常。
  • 现在为了生产,我按照需要的顺序将所有 Javascript 连接到一个文件中,并将所有 CSS 连接到另一个文件中。但是当我尝试使用连接的文件运行网页时,它会抛出一个错误:

    Uncaught TypeError: undefined is not a function

在连接的 Javascript 文件中加载 jquery.min.js 的那一行。

我能做些什么来缓解这种情况?我想连接所有文件并缩小它们以进行生产。请帮忙。


编辑:我将 Javascript 和 CSS 按照它们单独加载时的顺序合并,并且工作正常。

6个回答

假设这个问题还没有解决,很多单独的文件不会以分号结束它们的代码。大多数 jQuery 脚本(jQuery)都以(jQuery);.

作为单独的文件,脚本将加载得很好,但作为一个单独的文件,您需要分号。

如果在使用库时看到此错误,我们该如何解决?我正在尝试使用 2.3.2/js/bootstrap.min.js 和 /1.4.6/bootstrap-editable/js/bootstrap-editable.min.js
2021-04-22 02:06:37
显然,Bootstrap 的 js 就是一个这样的例子。谢谢你!那是一个真正的面条刮板。
2021-04-23 02:06:37
我正在尝试导入 youtube iframe API,但它不以分号结尾,并且出现此错误。我没有将它与任何东西连接起来......我正在用 jQuery.getScript() 加载它。所以......这可能是导致我错误的原因吗?或者这没有意义?
2021-04-29 02:06:37
有人可以解释一下这是什么意思吗?我只是导入 JQUEry、Bootstrap 和我编写的文件,所有文件都以分号结尾。那么是什么导致了错误?
2021-05-10 02:06:37
+1。当连接 JavaScript 代码时,你总是应该用分号连接它们。它们中的太多仍然有效,而较少会导致错误。
2021-05-13 02:06:37

您可能需要重新检查合并文件的顺序,它应该是这样的:

  1. jquery.min.js
  2. jquery-ui.js
  3. 您加载的任何第三方插件
  4. 你的自定义 JS
它就像这样只有 json2.js, jquery-1.6.1.min.js, jquery plugins, my code 。按照这个顺序。
2021-04-20 02:06:37
如果 json2.js 正在使用任何 jquery 函数,那么 jquery.min.js 应该是第一个。我会建议。jquery.min.js,jqueryPlugins,json2.js,我的代码。
2021-05-10 02:06:37

这个解决方案对我有用


    ;(函数($){
        // 你的代码
    })(jQuery);

将您的代码移到闭包内并使用 $ 而不是 jQuery

我在https://magento.stackexchange.com/questions/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma 中找到了上述解决方案

搜索太多后

两次引用不同版本的 jQuery 时,我遇到了同样的错误。

在我的母版页中:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

也在页面上:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script>

我最近在使用jQuery Validation 插件时遇到了这个问题,使用Squishit,也出现了 js 错误:

“未定义不是函数”

我通过更改对未缩小的jquery.validate.js 文件的引用而不是 jquery.validate.min.js来修复它

@MvcHtmlString.Create(
    @SquishIt.Framework.Bundle.JavaScript()
        .Add("~/Scripts/Libraries/jquery-1.8.2.min.js")
        .Add("~/Scripts/Libraries/jquery-ui-1.9.1.custom.min.js")
        .Add("~/Scripts/Libraries/jquery.unobtrusive-ajax.min.js")
        .Add("~/Scripts/Libraries/jquery.validate.js")
        .Add("~/Scripts/Libraries/jquery.validate.unobtrusive.js")
         ... more files

我认为某些文件的缩小版本,例如,当使用 Squishit 进一步压缩时,在某些情况下可能无法处理丢失的分号等问题,正如@Dustin 所建议的那样,因此您可能必须尝试使用​​哪些文件可以双重压缩,您只需将其留给 Squishit 或您捆绑的任何东西。

对我来说,是 NuGet 包的 1.0.2 版中的 json2.min.js 文件导致了问题。我将它切换到非最小文件,现在 Squishit 组合文件工作正常。
2021-04-30 02:06:37
使用未缩小版本对我来说只是门票 - 谢谢。
2021-05-01 02:06:37