Uncaught TypeError: undefined не является функцией при загрузке jquery-min.js



Я создаю обычную веб-страницу, которая требует от меня загрузки около пяти файлов CSS и десяти файлов Javascript.




  • при загрузке их отдельно на HTML-странице, моя веб-страница загружается нормально.


  • теперь для производства, я объединил все Javascript в один файл, в нужном порядке, и все CSS в другой файл. Но когда я пытаюсь запустить веб-страницу с Объединенными файлами, она выдает ошибку говоря:



    Uncaught TypeError: undefined is not a function




на линии, где jquery.минута.js загружается в объединенный файл Javascript.



что я могу сделать чтобы избежать этого? Я хочу объединить все файлы и минимизировать их для производства. Пожалуйста помочь.




EDIT: я объединил Javascript и CSS в том порядке, в котором они были, когда они загружались по отдельности и работали нормально.

844   13  

13 ответов:

предполагая, что эта проблема все еще не решена, многие отдельные файлы не заканчивают свой код точкой с запятой. Большинство сценариев jQuery заканчиваются на (jQuery) и (jQuery);.

как отдельные файлы скрипт будет загружаться просто отлично, но как один отдельный файл вам нужны точки с запятой.

возможно, Вам придется повторно проверить порядок, в котором вы объединяете файлы, это должно быть что-то вроде:

  1. jquery.минута.js
  2. jquery-ui.js
  3. любые сторонние плагины, которые вы загружаете
  4. ваш пользовательский JS

Это решение работало для меня


    ;(function($){
        // your code
    })(jQuery);

переместите код внутри закрытия и используйте $ вместо jQuery

Я нашел выше решение в https://magento.stackexchange.com/questions/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma

после seraching слишком много

Я получил ту же ошибку, имея две ссылки на разные версии 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, используя Squishit, также получая ошибку js:

"undefined-это не функция"

я исправил это, изменив ссылку на unminified jquery.утверждать.JS файл, а не jquery.утверждать.минута.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 или что вы связываете.

для тех, кто все еще не мог это исправить, я сделал это, изменив свое " это " на "$(this) " при использовании jQuery.

Например:

$('.icon').click(function() {
    this.fadeOut();
});

исправлено:

$('.icon').click(function() {
    $(this).fadeOut();
});

я столкнулся с той же проблемой, когда ошибочно названная переменная с тем же именем, что и функция.

значит так:

isLive = isLive(data);

не удалось, генерируя упомянутое сообщение об ошибке OP.

исправить это было так же просто, как изменить выше строки:

isItALive = isLive(data);

Я не знаю, насколько это помогает в этой ситуации, но я решил поставить этот ответ для других ищу решения подобных проблем.

Да, я также исправил его изменение в библиотеках js на unminified.

например, в теге, изменить:

<script type="text/javascript" src="js/jquery.ui.core.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.min.js"></script>

для:

<script type="text/javascript" src="js/jquery.ui.core.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.js"></script>

выход из ' min ' как unminified.

Спасибо за идею.

помните: функции Javascript чувствительны к регистру.

у меня был случай, когда я уверен, что мой код будет работать бесперебойно. Но все же, получил ошибку и я проверил Javascript console из Google Chrome, чтобы проверить, что это такое.

моя ошибка

opt.SetAttribute("value",values[a]);

и получил то же сообщение об ошибке:

Uncaught TypeError: undefined is not a function

ничего не кажется неправильным с выше код, но он не работает. Я устраняю неполадки почти час, а затем сравниваю это с моим другим запущенным кодом. Моя ошибка заключается в том, что он был установлен до SetAttribute, которая должна быть setAttribute.

у меня только что было такое же сообщение со следующим кодом (в IcedCoffeeScript):

f = (err,cb) ->
  cb null, true

await f defer err, res
console.log err if err  

мне показалось, что это обычный ICS-код. Я развернул конструкцию await-defer к обычному CoffeeScript:

f (err,res) ->
  console.log err if err

что на самом деле произошло, что я попытался передать 1 функцию обратного вызова( с 2 параметрами ) в функцию f ожидая два параметра, эффективно не устанавливая cb внутри f, который компилятор корректно как undefined is not a function.

ошибка произошла из-за того, что я слепо вставил код шаблона обратного вызова. f не нужно err параметр, переданный в него, таким образом, должен быть просто:

f = (cb) ->
  cb null, true
f (err,res) ->
  console.log err if err

в общем случае, я бы рекомендовал перепроверить функции подписи и воззвания для согласования арности. Стек вызовов в сообщении об ошибке должен быть в состоянии предоставить полезные советы.

в вашем частном случае, я рекомендую искать определения функций появляются дважды в объединенном файле, с разными сигнатурами или назначениями глобальным переменным, содержащим функции.

убедитесь, что вы прокомментировали любые комментарии. Иногда при копировании и вставке вы оставите"/*!"

также, когда вы заходите в консоль, они будут перечислять ваши ошибки, и вы должны принимать их по одному. Если вы видите "Uncaught SyntaxError: Unexpected token*", это может означать, что он читает ваш JS-файл, и он не проходит мимо первой строки.

/*! * jquery.инструменты 1.1.2-отсутствует библиотека пользовательского интерфейса для Интернета * * [инструментальные средства.вкладки-1.0.4, инструменты.подсказка-1.1.2, инструменты.прокручивать-1.1.2, инструменты.оверлей-1.1.2, инструменты.expose-1.0.5] * * Copyright (c) 2009 Tero Piirainen * http://flowplayer.org/tools/ * Сгенерированный файл: Ср окт 07 09: 40: 16 GMT 2009 * /

в случае, если есть какие-то дебилы там, как я, у меня была эта неприятная проблема, потому что я забыл простой

new

ключевое слово перед созданием экземпляра нового объекта.

Я получил это, когда случайно передал слишком много параметров в функцию jquery, которая ожидала только один параметр обратного вызова.

для других устранение неполадок: убедитесь, что вы проверяете все ваши вызовы функции jquery для дополнительных параметров.

Comments

    Ничего не найдено.