Как стать автором
Обновить

Комментарии 15

печально известной Expected T_PAAMAYIM_NEKUDOTAYIM
Не буду оправдывать, но скажу, что ошибка с таким названием как минимум легко гуглится:)
Эммм, простите, но мне кажется что тексты приведенных здесь ошибок абсолютно очевидно указывают на причину этих ошибок.
Неужто увидев в консоли "Uncaught TypeError: Cannot set property ‘foo’ of null, Uncaught TypeError: Cannot set property ‘foo’ of undefined" вы будете чесать репу и делать что-то иное кроме как искать .foo или ['foo'] в строке указанной в стек-трейсе?
Я довольно часто вижу, что за рубежом говорят: “Так классно, спасибо. Ты же еще и время на это потратил”. А в России: “Ой, это же каждый знает, всё итак понятно”.

Во-первых, нет, это не всем понятно. У всех разный уровень и опыт.
Во-вторых, если вы читали статью, то там указано, что многие ошибки даже близко не лежат там, куда указывает номер строки.

P.S. Все замечания по контенту можете отправлять в оригинал статьи, здесь только перевод.
Ну хорошо-хорошо, некоторые не совсем очевидны, например «Unexpected token ILLEGAL» (хотя качественный редактор вам жирно и пестро пометит место, где у вас ILLEGAL прячется) :)
Ну и да, новичкам это, разумеется, будет полезно и интересно
Так классно, спасибо. Ты же еще и время на это потратил)
Я довольно часто вижу, что за рубежом говорят: “Так классно, спасибо. Ты же еще и время на это потратил”. А в России: “Ой, это же каждый знает, всё итак понятно”.

В данном контексте я бы рассматривал эти фразы, как показатель компетентности среднего разработчика. Если на этом вашем западе хвалят такую статью, то я сильно сомневаюсь в профессионализме хвалящего. Ибо это такие основы, которые просто стыдно не знать.

Другое дело, если бы были показаны типичные (или наоборот, нетипичные, но весьма занимательные) ошибки, когда ошибка в одном месте приводит к сообщению об ошибке в другом. А также как восстанавливать реальное положение ошибочного кода (вообще я сомневаюсь, что это возможно в такой постановке). Сам я зашел сюда только за этими советами, а их и нет — одна вода, «если забыли кавычку, поставьте кавычку, забыли скобку — поставьте скобку».

P.S. Все замечания по контенту можете отправлять в оригинал статьи, здесь только перевод.

Ну почему же. Если вы уже решились на перевод, то должны понимать его ценность. А если ценности нет никакой, то может ну его, этот перевод? И поискать что-нибудь покачественнее?
все это замечательно работает пока вы не начинаете использовать jQuery. И вот тут разверзаются врата в ад
Хорошо-хорошо, разверну мысль для тех, кто не понял. Когда вы используете jQuery, ошибка типа «Uncaught TypeError: undefined is not a function», которая произошла в недрах вашей функции, например, обработчика клика по ссылке/кнопке/итп будет показывать куда угодно, только не на вашу функцию. В принципе даже не рядом. Можно только догадаться, что последний раз ты менял там-то и возможно, где-то там что-то где-то не учтено или не там стоит запятая (на которые яваскрипту вообщем-то тоже положить и сообщение об ошибке тоже будет вести куда угодно, кроме вашей функции с ошибкой)
гыгы, jquery, в основном, вешают на элементы DOM'а, а тут все просто и дебажить и прочее.
мое любимое: jquery плагин (слайдер картинок) на конкретной странице сайта падает внутри себя с сообщением про «undefined is not a function». Падает только на этой странице, при этом сам плагин годами успешно применяется и работает на куче сайтов без каких либо проблем. Причина? Другой скрипт подтянул извне другую версию jQuery и в итоге у нас на странице оказывается два jQuery разных версий. Причем сами-то функции jQuery данную ситуацию как-то ухитряются разруливать…

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

Отладка в консоли браузера — это боль.
Ну, девтулзы хрома вам например покажут полный стек вызовов, и там вы найдете номер строки в вашем файле, с которой все началось
А ещё там можно посмотреть откуда в коде был вызван http запрос на вкладке запросов.
Вроде как для того, чтобы избегать большей части перечисленных ошибок придуманы различные IDE и расширения типа Typescript, а также принципы кодирования (как минимум не использовать однобуквенные идентификаторы без надобности).
Cовсем недавно один инициативный человек из Новосибирска выступал с докладом на подобную тему.
Uncaught URIError: URI malformed

Лично у меня была проблема что substring до вызова функции некорректно обрезала encoded url. Я долго не мог понять в чем дело и искал решения в интернете.
В итоге допер сам.

Если у Вас эта проблема, попробуйте не обрезать URL и использовать функцию decodeURI, передавая ей весь URL целиком.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории