Uncaught TypeError: undefined не является функцией при загрузке jquery-min.js
Я создаю обычную веб-страницу, которая требует от меня загрузки около пяти файлов CSS и десяти файлов Javascript.
- при загрузке их отдельно на HTML-странице, моя веб-страница загружается нормально.
теперь для производства, я объединил все Javascript в один файл, в нужном порядке, и все CSS в другой файл. Но когда я пытаюсь запустить веб-страницу с Объединенными файлами, она выдает ошибку говоря:
Uncaught TypeError: undefined is not a function
на линии, где jquery.минута.js загружается в объединенный файл Javascript.
что я могу сделать чтобы избежать этого? Я хочу объединить все файлы и минимизировать их для производства. Пожалуйста помочь.
EDIT: я объединил Javascript и CSS в том порядке, в котором они были, когда они загружались по отдельности и работали нормально.
13 ответов:
предполагая, что эта проблема все еще не решена, многие отдельные файлы не заканчивают свой код точкой с запятой. Большинство сценариев jQuery заканчиваются на
(jQuery)и(jQuery);.как отдельные файлы скрипт будет загружаться просто отлично, но как один отдельный файл вам нужны точки с запятой.
возможно, Вам придется повторно проверить порядок, в котором вы объединяете файлы, это должно быть что-то вроде:
- jquery.минута.js
- jquery-ui.js
- любые сторонние плагины, которые вы загружаете
- ваш пользовательский 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