Я создаю обычную веб-страницу, для которой требуется загрузить около пяти файлов CSS и десяти файлов Javascript.
- При загрузке их отдельно на HTML-страницу моя веб-страница загружается нормально.
Теперь для производства я объединил весь Javascript в один файл в нужном порядке, а весь CSS - в другой файл. Но когда я пытаюсь запустить веб-страницу с объединенными файлами, появляется сообщение об ошибке:
Uncaught TypeError: undefined is not a function
В строке, где jquery.min.js загружается в объединенный файл Javascript.
Что я могу сделать, чтобы это смягчить? Я хочу объединить все файлы и минимизировать их для производства. Пожалуйста помоги.
РЕДАКТИРОВАТЬ: я объединил Javascript и CSS в том порядке, в котором они были, когда они загружались по отдельности и работали нормально.
javascript
jquery
minify
ghostCoder
источник
источник
undefined
если у вас нет кода для показа?Ответы:
Предполагая, что эта проблема все еще не решена, многие отдельные файлы не заканчивают свой код точкой с запятой. Большинство сценариев jQuery заканчиваются на.
(jQuery)
Вам необходимо иметь(jQuery);
.Как отдельные файлы скрипт загрузится нормально, но как один отдельный файл вам нужны точки с запятой.
источник
Возможно, вам придется повторно проверить порядок, в котором вы объединяете файлы, он должен быть примерно таким:
источник
Это решение сработало для меня
Переместите свой код в закрытие и используйте $ вместо jQuery
Я нашел вышеуказанное решение в /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
после слишком долгих поисков
источник
У меня такая же ошибка из-за двух ссылок на разные версии jQuery.
На моей главной странице:
А также на странице:
источник
Недавно у меня возникла эта проблема с подключаемым модулем jQuery Validation , использующим Squishit , также получая ошибку js:
Я установил ее, изменив ссылку на unminified файл jquery.validate.js, а не jquery.validate.min.js.
Я думаю, что уменьшенная версия определенных файлов, при дальнейшем сжатии с использованием, например, Squishit, может в некоторых случаях не иметь дело с отсутствующими точками с запятой и т.п., как предлагает @Dustin, поэтому вам, возможно, придется поэкспериментировать с тем, какие файлы вы можете дважды сжать, и который вы просто оставляете Squishit или тому, с чем вы связываете.
источник
Для тех, кто все еще не мог это исправить, я сделал это, изменив мое «this» на «$ (this)» при использовании jQuery.
НАПРИМЕР:
Исправлена:
источник
Я столкнулся с той же проблемой, когда по ошибке назвал переменную с тем же именем, что и функция.
Итак, это:
не удалось, создание упомянутого сообщения об ошибке OP.
Исправить это было так же просто, как изменить строку выше на:
Не знаю, насколько это помогает в этой ситуации, но я решил дать этот ответ другим, ищущим решение аналогичных проблем.
источник
Да, я также исправил изменение в библиотеках js на unminified.
Например, в теге измените:
Для:
Выход из "мин" без миниатюр.
Спасибо за идею.
источник
Помните: функции Javascript Чувствительны к регистру.
У меня был случай, когда я почти уверен, что мой код будет работать без сбоев. Но все же возникла ошибка, и я проверил консоль Javascript в Google Chrome, чтобы проверить, что это такое.
Моя строка ошибки
И получил такое же сообщение об ошибке:
В приведенном выше коде все в порядке, но он не работал. Я занимаюсь устранением неполадок почти час, а затем сравниваю его с другим работающим кодом. Моя ошибка в том, что он был установлен
SetAttribute
, как и должно бытьsetAttribute
.источник
В случае, если есть такие придурки, как я, у меня была неприятная проблема, потому что я забыл простую
new
ключевое слово перед созданием нового объекта.
источник
У меня было такое же сообщение со следующим кодом (в IcedCoffeeScript):
Мне это показалось обычным кодом ICS. Я развернул конструкцию await-defer до обычного CoffeeScript:
Что действительно произошло, так это то, что я попытался передать 1 функцию обратного вызова (с 2 параметрами) функции,
f
ожидающей двух параметров, фактически не устанавливаяcb
внутриf
, что компилятор правильно сообщил какundefined is not a function
.Ошибка произошла из-за того, что я слепо вставил шаблонный код в стиле обратного вызова.
f
не требуетerr
передачи параметра, поэтому должно быть просто:В общем случае я бы рекомендовал перепроверить сигнатуры и вызовы функций на соответствие арностей. Стек вызовов в сообщении об ошибке должен предоставлять полезные подсказки.
В вашем особом случае я рекомендую искать определения функций, дважды появляющиеся в объединенном файле с разными подписями или назначениями глобальным переменным, содержащим функции.
источник
Убедитесь, что вы закомментировали все комментарии. Иногда при копировании и вставке вы оставляете "/ *!"
Также, когда вы заходите в консоль, они перечисляют ваши ошибки, и вы должны делать это по очереди. Если вы видите «Uncaught SyntaxError: Unexpected token *», это может означать, что он читает ваш файл js и не проходит первую строку.
/ *! * jquery.tools 1.1.2 - Отсутствующая библиотека пользовательского интерфейса для Интернета * * [tools.tabs-1.0.4, tools.tooltip-1.1.2, tools.scrollable-1.1.2, tools.overlay-1.1.2, tools.expose-1.0.5] * * Авторские права (c) 2009 Tero Piirainen * http://flowplayer.org/tools/ * Файл создан: среда, 7 октября, 09:40:16 по Гринвичу 2009 г. * /
источник
Я получил это, когда случайно передал слишком много параметров в функцию jquery, которая ожидала только один параметр обратного вызова.
Для устранения неполадок других: убедитесь, что вы проверили все вызовы функций jquery на наличие дополнительных параметров.
источник