Ng-lazyload-image: TypeError: не удается прочитать свойство toLowerCase из undefined при загрузке страницы из среднего и верхнего

Созданный на 18 июл. 2017  ·  11Комментарии  ·  Источник: tjoskar/ng-lazyload-image

Всем привет,

Я обнаружил ошибку, из-за которой, если вы загружаете страницу, прокрученную наполовину вниз (а не вверху), Node выдает ошибку «TypeError: невозможно прочитать свойство toLowerCase из undefined». Кажется, что это не нарушает работу плагина, поскольку он продолжает ленивую загрузку, однако новое событие вывода onLoad, похоже, не срабатывает правильно, пока вы снова не вернетесь на самый верх.

Как воссоздать: загрузите тестовую страницу как обычно, вверху. Прокрутите вниз, пока не окажетесь примерно на полпути. Теперь обновите страницу и начните прокручивать ее с середины. Вы должны увидеть ошибку узла. Если нет, убедитесь, что вы используете событие вывода onLoad. Если вы прокрутите до самого верха, вы увидите, что событие onLoad внезапно начало работать.

Самый полезный комментарий

Все 11 Комментарий

Привет,

Я не могу воспроизвести это: /
Когда вы говорите «Загрузите тестовую страницу как обычно». Вы имеете в виду эту страницу: https://tjoskar.github.io/ng-lazyload-image или вы запускаете страницу локально с помощью npm start ?

Какой браузер вы используете?

По какой-то причине на github.io я не могу обновить страницу после ее однократной загрузки. Он говорит, что 404 не найден каждый раз :(

Но в целом я имею в виду локально с любым проектом - я использую Angular 4 с Universal и Node (поэтому универсальный может иметь какое-то отношение к этому). Использование Chrome 59 для Windows 10. Я думаю, что это может быть ошибка новой функции onLoad, но не положительная. Ошибка появляется только в консоли Node, похоже, не вызывает никаких ошибок в консоли Chrome.

Привет @elitenick!
Можете ли вы дать полную трассировку ошибок в стеке?

@tjoskar
Я думаю, что эта ошибка связана с https://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L75 , прежде чем здесь будет обнаружена ошибка, но поскольку это не так.
В Angular Universal здесь https://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L47 вызывает ошибку, потому что element на сервере не определено.
Думаю, неплохим решением проблемы является отключение ленивого img на стороне сервера.

По какой-то причине на github.io я не могу обновить страницу после ее однократной загрузки. Он говорит, что 404 не найден каждый раз :(

Да, это потому, что github не поддерживает перенаправление всех запросов на index.html (но это совершенно другая проблема)

Вероятно, это как-то связано с Angular Universal, но есть несколько вещей, которые я не понимаю:

  1. Почему вы получаете сообщение об ошибке только при обновлении страницы? Узел не должен получать никакой информации о позиции прокрутки или о вашем первом или втором посещении (серверная часть не должна иметь такого состояния).
  2. Допустим, проблема возникает в этой строке . Если это так, element не может быть неопределенным, потому что мы получаем доступ к nodeName из element без каких-либо ошибок, и, кроме того, мы используем element в isVisible () и мы даже используем window в этой функции, которая не должна быть определена в контексте сервера.

Я думаю, что это может быть ошибка новой функции onLoad, но не положительно

Вы используете (onLoad) ? Можете попробовать удалить и посмотреть, сможете ли вы воспроизвести ошибку?

@rimlin

Думаю, неплохим решением проблемы является отключение ленивого img на стороне сервера.

Да, у меня нет никакого смысла лениво загружать изображения на сервер (поскольку мы ничего не знаем о размере экрана).
Может быть, мы можем просто добавить if (isPlatformServer(this.platformId)) return; ( ref ) в ngAfterContentInit .

@elitenick , я только что опубликовал [email protected] с запросом на вытягивание npm install [email protected] ) и посмотреть, решит ли он проблему?

Для уверенности! Проверим сегодня и дам знать! Спасибо ребята.

Это фиксированный! Благодаря тонну!! Повторно воссоздал мой сценарий несколько раз и больше никаких ошибок узла. И после запуска Angular ленивая загрузка продолжает работать.

Включено в [email protected] .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги