Спустя несколько лет работы разных IPTV-сервисов, большинство пользователей пришли к услугам Wink. Это платформа для просмотра практически любых ТВ-передач, которая работает на территории России. В данном руководстве вы сможете узнать, почему в Wink появляется ошибка при воспроизведении на Ростелеком ТВ. И как её устранить.
- Подробнее о платформе Wink
- Решение ошибки при воспроизведении Ростелеком ТВ
- Смена настроек DNS для использования Wink
- Контакты поддержки Ростелеком ТВ
- Видео-инструкция
Сегодня многие популярные и перспективные онлайн-платформы стремятся занять как можно больше пространства на цифровом рынке. Ярким примером этого является компания Яндекс, у которой уже появилась услуга доставки еды, собственный онлайн-маркет и ещё несколько десятков подобных сервисов. Wink — это онлайн-платформа для просмотра ТВ контента. Она представлена в виде мобильного приложения. И доступна всем клиентам, использующие услуги компании Ростелеком.
Для того, чтобы получить доступ к контенту Wink, пользователю нужно скачать приложение из Play Market или App Store для своего планшета или мобильного телефона.
Чтобы начать пользоваться сервисом от Ростелекома, нужно позвонить по телефону 8-800-100-0-800 и попросить подключить вас к услуге. Когда она будет подключена, на ваш номер телефона придёт СМС, в котором будут дальнейшие инструкции.
Далее нужно в своём личном кабинете на сайте или в приложении войти в раздел «Моё» и активировать аккаунт, введя цифры из СМС сообщения.
Это может быть полезным: что такое Wink от Ростелеком и сколько стоит.
Решение ошибки при воспроизведении Ростелеком ТВ
Как и любые другие приложения у Wink иногда появляются проблемы при воспроизведении контента. Разработчики также уведомляют нас на сайте и в приложении, что данные услуги могут быть распространены только на территории РФ. Если попытаться воспроизвести контент в любой другой стране, не мудрено, что в вашем телевизоре, телефоне или на сайте появляется ошибка.
Но для тех, кто пытается смотреть Винк на территории России с ошибкой можно попытаться справиться следующим образом:
- Убедитесь, что вы зарегистрированы и вошли в свой аккаунт не зависимо от того, на каком устройстве вы используете Wink;
Войдите в свой аккаунт Wink - Получите промо-код и введите его в соответствующей форме. Если этого не сделать, вы не получите доступ к услугам сервиса;
Введите проверочный код для активации Wink - Из-за временных сбоев ошибка может появляться одноразово. Попробуйте перезагрузить телефон или переустановить мобильное приложение. Если вы используете компьютер для входа на сайте Винк, попробуйте почистить браузер и перезайти в свой аккаунт;
Чистка браузера на компьютере - По возможности, попробуйте поменять тип подключения. Если вы выходили в Интернет при помощи безлимитного кабельного подключения, используйте мобильный Интернет, и наоборот.
Используйте эти варианты все последовательно, чтобы избавиться в приложении Wink от ошибки при проигрывании контента Ростелеком ТВ. Также рекомендуется отключить устройство на несколько минут от сети, на котором запущено приложение. Некоторые устаревшие устройства не в состоянии воспроизводить контент. Обычно, это телевизоры, которые были выпущены до 2015 года, не зависимо от компании-производителя.
Читайте также: как выйти из Wink на Ростелеком телевизоре.
Смена настроек DNS для использования Wink
Иногда в проблемах с доступом к разным Интернет-порталам и сервисам появляется необходимость сменить настройки DNS. Установив эти параметры, удаётся решить ошибку.
Если вы используете подключение через Wi-Fi роутер, в модели TP-Link сменить настройки DNS можно следующим образом, чтобы избежать ошибки при воспроизведении Wink через Ростелеком ТВ:
- Для входа используйте адрес: 192.168.1.1 или 192.168.0.1. Это адрес необходимо прописать в адресной строке вашего браузера;
- Введите логин и пароль «admin» в обоих случаях;
- Выберите параметр DHCP;
Выберите пункт DHCP в настройках роутера - Введите в поле «Предпочитаемый DNS» и «Альтернативный» адреса серверов Яндекс: 77.88.8.8, 77.88.8.1 и сохраните эту настройку в роутере.
Введите адрес DNS сервера в настройках роутера
Теперь перезагрузите устройство, с которого вы входили в приложение Wink, включите его и попытайтесь подключиться к сервису снова.
Необходимо также убедиться в том, что ваше устройство работает на ОС Android 4.4 или выше. Так как систему ниже версией приложение Wink не поддерживает. Эту информацию в мобильных устройствах можно посмотреть в разделе «Об устройстве», «О телефоне». Если речь идёт о телевизоре с Android, то он должен быть с версией 5.0 и выше.
Иногда проблемы могут появляться в телевизорах Samsung, которые были выпущены в 2019 году и позже. Помогут решить эту ошибку на сайте производителя устройства. В большинстве стран есть сервисы компании, куда можно дозвониться. Подробнее о контактах можно узнать на русскоязычной версии сайта Samsung.
Это интересно: как смотреть бесплатно Wink на телевизоре.
Контакты поддержки Ростелеком ТВ
Если вам не удалось решить проблему с воспроизведением контента Wink, попробуйте обратиться за помощью в техническую поддержку приложения Ростелеком ТВ. Большинство контактов для связи можно найти на странице сайта Wink.
Воспользуйтесь кнопкой «Обратная связь» и напишите обращение, описав в подробностях свою проблему. Написать также можно по адресу электронной почты: wink@rt.ru.
Видео-инструкция
В данном ролике вы сможете увидеть, как активировать Wink на телевизоре, если появляется ошибка при воспроизведении Ростелеком ТВ.
Ситуация: вы пишете скрипт, в котором вам нужно выяснить расстояние от верха экрана до начала нужного элемента. У этого элемента есть класс .entry-content, и вы используете jQuery, чтобы достучаться до него:
// …
var dh;
dh = $('.entry_content').offset().top;
После запуска скрипта браузер выдаёт ошибку:
❌ TypeError: ‘undefined’ is not an object
Странно, но вы точно знаете, что таким способом можно искать элемент по его классу. Более того, точно такой же код работает тремя строчками выше и без ошибок.
Что это значит: браузер при виде точки понимает, что перед ним — объект, у которого есть какие-то свойства. Эта ошибка означает, что вы пытаетесь обратиться к свойствам несуществующего объекта.
Когда встречается: когда программист делает опечатки в имени объекта, неправильно объявляет его или начинает работать с чем-то, что точно не объект.
В нашем примере программист неправильно указал имя раздела при вызове, и вот что произошло:
- Браузер знает, что на странице есть элемент с классом entry-content, который написан через дефис.
- Программист увлёкся и поставил знак подчёркивания вместо дефиса.
- Скрипт попытался найти этот класс, но не смог, поэтому вернул значение undefined.
- После этого команда стала выглядеть так: dh = undefined.offset().top, но undefined.offset() — это не объект, а что-то неопределённое, у которого нет свойства top.
- Браузер выдаёт ошибку, что вообще-то это не объект и работать с ним он не будет.
Что делать с ошибкой TypeError: ‘undefined’ is not an object
Эта ошибка означает, что вы пытаетесь использовать как объект то, что им не является. Чтобы исправить эту ошибку, проверьте:
- нет ли у вас опечаток в именах и названиях (скорее всего);
- правильно ли вы определили нужный объект;
- в jQuery нужно будет дополнительно проверить, не теряется ли значение this или $ при использовании внутри функции;
- есть ли внутри вашей переменной или объекта вообще что-нибудь, с чем можно работать.
Попробуйте сами
У вас есть страница с элементом <h1 id="text-test"></h1>
и JavaScript-кодом. При повторном запуске анимации он падает с нашей ошибкой. Попробуйте выяснить, почему так происходит.
document.addEventListener('DOMContentLoaded', function (event) {
var dataText = ["Test", "Hello", "Salut", "Bonjour"];
function typeWriter(text, i, fnCallback) {
if (i < (text.length)) {
document.getElementById("text-test").innerHTML = text.substring(0, i + 1) + '<span aria-hidden="true"></span>';
setTimeout(function () {
typeWriter(text, i + 1, fnCallback)
}, 100);
}
else if (typeof fnCallback == 'function') {
setTimeout(fnCallback, 700);
}
}
function StartTextAnimation(i) {
if (typeof dataText[i] == 'undefined') {
setTimeout(function () {
StartTextAnimation(0);
}, 10000);
}
// ВОТ ТУТ ОШИБКА ↓
if (i < dataText[i].length) {
typeWriter(dataText[i], 0, function () {
StartTextAnimation(i + 1);
});
}
}
StartTextAnimation(0);
});
«Не работает Wink» — серьезная неполадка для граждан России. Теперь все программы, которое ранее пользователи ждали по ТВ, можно смотреть где угодно с помощью этой услуги. Сервис работает на любом девайсе после простой регистрации. Под одну учетную запись возможно подключить до пяти устройств бесплатно. Но если только девайсы поддерживают услугу. О том, что делать, если опция не функционирует подробнее в этой статье.
Содержание
- 1 Почему не работает Wink на телевизоре: причины
- 2 Что делать, если перестал работать Wink на Смарт ТВ
- 2.1 Перезагрузка
- 2.2 Переустановка
- 2.3 Смена точки доступа
- 2.4 Смена адреса DNS-сервера
- 2.5 Сброс Smart Hub
- 2.6 Сброс телевизора
- 3 Ошибка при воспроизведении
- 4 Ошибка при инициализации приложения
- 5 Код ошибки 6000000 Wink
- 6 Ошибка в заполнении формы
- 7 Что делать, если не работает Wink на компьютере
Сервис только недавно начал функционировать, поэтому имеет определенное неточности в работе. Часто программа находится на модерации, чтобы усовершенствовать технологию. Сейчас она доступна для скачивания только жителям РФ. Доступ за границей не планируется. Основные причины и способы их устранения описаны ниже.
Что делать, если перестал работать Wink на Смарт ТВ
Если не работает Wink на Смарт ТВ то прежде, чем приступить к настройкам убедитесь в правильности подключения опции:
- пользователь зарегистрировался;
- получил промокод на пользование услугой.
Если программа так и не запустилась и на телевизоре отображается черный экран, необходимо выполнить одно из следующих действий:
- перезагрузить телевизор;
- переустановить программу;
- переустановить сервис;
- переключить беспроводную сеть;
- изменить адреса DNS-сервера;
- сбросить Smart Hub;
- сбросить настройки Самсунг.
Устранять проблему необходимо, начиная с первого варианта. И приступать к последнему только, если не сработали предыдущие.
Перезагрузка
Если платформа перестала работать внезапно перезагрузите ТВ.Отключите девайс с розетки на несколько минут. Потом снова включить, заново переустановить Wink. Если проблема устранилась, то используйте функцию в привычном режиме. Если ситуация осталась прежней перейдите к следующему пункту.
Переустановка
Если Wink Ростелеком не работает — переустановите его. Приложение поддерживается только теми телевизорами, которые произведены не позднее 2015 года. Для уточнения модели и года выпуска ТВ воспользуйтесь одним из двух вариантов:
- осмотрите заводскую этикетку, наклеенной сзади;
- откройте меню в рубрике «Поддержка».
В пункте «Код модели» отображается запрашиваемые данные.
После того, как убедились в том, что ТВ в принципе может поддерживать функцию, перейдите к ее переустановке. Следуйте установленному алгоритму.
- Выберите «APPS».
- Нажмите на центральную кнопку пульта;
- Из перечня приложений выберите название сервиса;
- Зажмите центральную кнопку, пока не отобразится дополнительное меню;
- Выберите «Повторная установка.
При правильно выполненных действиях приложение переустановится. Время установки зависит от скорости интернета.
Смена точки доступа
Для возвращения работоспособности функции нужно сменить точку доступа. Оптимальное решение проблемы — создать из девайса точку и произвести подключение к нему. Если после таких действий функция работает корректно, то это значит, что проблемы возникли у провайдера.
Смена адреса DNS-сервера
Если с провайдером проблем нет, то стоит проверить DNS-сервер:
- откройте меню настроек ТВ;
- выполните переход «Общие»/«Состояние сети»;
- убедитесь, что интернет подключен;
- выберите «Настройки IP»;
- нажмите «Настройки DNS», активируйте ручные настройки;
- В поле «Сервер DNS» укажите 8.8.8.8. или 208.67.222.222;
- нажмите «Готово», вернитесь в меню;
- сохраните изменения.
После проведенных настроек убедитесь, что корректная работа сети восстановлена. Перезагрузите ТВ.
Если у Вас остались вопросы или есть жалобы — сообщите нам
Сброс Smart Hub
После активации функции удаляются данные, которые были подключены до образования ошибки. Сброс настроек удаляет ранее установленные программы, обновляет заводские настройки.
- В меню нажмите «Поддержка».
- Выполните переход «Самодиагностики»/«Сброс Smart Hub».
- Укажите ПИН-код.
- Ожидайте несколько минут обработки информации ТВ.
- Возвращаемся в «Главное меню».
- Согласитесь с установленными условиями.
- Выполните вход в учетную запись.
- Выберите Wink, установите его.
- Запустите приложение.
Прежде, чем приступить к столь решительным действиям, убедитесь, что телевизор прошел сертификацию для Российской Федерации. Если выполнить сброс настроек на ТВ без сертификата можно полностью заблокировать устройство.
Сброс телевизора
Переходить к сбросу настроек нужно только тогда, когда не сработали предлагаемые варианты. Способ не только устранит неполадку, но и вернет телевизор к заводским настройкам.
Ошибка при воспроизведении
Возникновение ошибки при воспроизведении отображается специальными знаками. Подробнее о них ниже.
Ошибка при инициализации приложения
Для устранения неполадки необходимо прописать DNS в настройках телевизора. Устранения ошибки, которая образовывается при инициализации приложения предполагает выполнение следующих действий, описанных ниже.
- Выполните переход «Сеть»/«Состояние сети».
- Выберите «Настройки IP».
- Нажмите «Настройки DNS»/«Ввести вручную».
- В отображенное поле пропишите 8.8.8.8., нажмите «Готово».
- Подтвердите действие нажатием ОК.
Выключите телевизор с розетки на 10 секунд. Подключите обратно, проверьте результат.
Код ошибки 6000000 Wink
Ошибка 6000000 значит, что отсутствует соединение с интернетом. Необходимо проверить соединение с сетью. Перезагрузить и повторно включить роутер.
Ошибка в заполнении формы
При возникновении ошибки Ростелеком лучше всего перезагрузить устройство. И начать подключение Wink заново.
Что делать, если не работает Wink на компьютере
Для использования на компьютере достаточно просто ввести в браузере ссылку Wink.rt.ru. Если опция не работает, то перезагрузить ПК и проверить подключение к интернету.
Wink — интерактивный каналы, которые поддерживаются множественными гаджетами.
Благодаря опции можно просматривать фильмы и сериал в высоком качестве онлайн. Для максимального удобства пользователей они могут выбрать подписку только с необходимым перечнем услуг.
Кроссплатформенный видеосервис Wink — это один из флагманских проектов крупнейшего в России оператора связи, компании Ростелеком. Началась с обычного Интернет-кинотеатра и превратилась мульти-платформу интерактивного ТВ и развлечений. На сегодняшний день, собрана некоторая база знаний, которая расскажет что означает та или иная ошибка воспроизведения Wink и что делать, если она появилась.
Что-то пошло не так с Ростелеком ТВ
В настоящий момент, при появлении проблем с работой интерактивного телевидения Ростелеком ТВ через платформу Wink, появляется сообщение «Что-то пошло не так» с кодом ошибки вот такого вида:
В нижней части сообщения есть кнопка «Подробнее», нажав на которую можно получить более развёрнутую информацию:
Структура кода ошибки Винк
Кодовое обозначение ошибки Ростелеком ТВ имеет вот такую структуру:
<тип ошибки>[-<субкод ошибки> (краткое уточнение)]
1. Тип ошибки — это идентификатор общей группы ошибок, берётся из словаря.
2. Субкод ошибки — получается из ответа сервера или внутренней библиотеки Винк.
3. Краткое уточнение — отображает короткое пояснение к ошибке. Необязательное поле, может отсутствовать.
Классификация по типам ошибок:
Тип “1-” — внутренние ошибки программного обеспечения.
Субкод ошибки при этом либо вообще отсутствует, либо получается из внутренней библиотеки ПО. Краткое уточнение может отсутствовать.
Тип “2-” — ошибки сети.
Субкод ошибки обычно отсутствует. В уточнении присутствует пояснение ошибки — multicast, dhcp, dns, timeout, reject и пр. Может присутствовать название удалённого источника ошибки из справочника.
Тип “3-” — ошибки сервера.
В субкоде отображается код http-статуса или серверный код ошибки ответа API, при его наличии. В уточнении идёт название удалённого источника ошибки.
Тип “4-” — ошибки в плеере. В настоящий момент тип «4» не применяется.
Субкод ошибки отсутствует. В кратком уточнении будет пояснение ошибки.
Возможные источники ошибок в кратком уточнении:
● apk – файл приложения
● app – appstore api
● aosp – AOSP веб-сервисы
● as – рекламный сервер AdStream
● chunk — файл медиа контента
● dis – discovery service
● gen – проверка доступности платформы
● gs – рекламный сервер GetShop
● img – файл изображения
● fw – файл прошивки
● manifest — manifest-файл HLS/DASH стриминга
● ms – аналитика просмотра контента Mediascope
● nc – newcache api
● nl – сервис netlog (crashlog)
● nsc – рекламный сервер NSC
● rn – release notes
● pay – payment api
● px – все рекламные пиксели из vast
● rdm – remote device manager api
● wa – аналитика платформы wink
Теперь я подробнее расскажу и покажу какие коды ошибок сейчас встречаются и что с ними делать. Часть возникающих проблем самостоятельно решить не получится, так как решение находится в зоне ответственности провайдера и тогда придётся обращаться в техническую поддержку РТК.
Внутренние ошибки приложения Wink:
Тип ошибки | Описание | Решение |
1-0 | Внутренний сбой (причина по умолчанию) | 1. Перезагрузите приставку
2. Проверьте что STB точно подключена к сети роутера и он правильно сконфигурирован. 3. Сбросьте на заводские настройки 4. Как вариант, можно пользоваться старой версией ПО до выхода следующего обновления |
1-1 (updaterd) 1-1-0 (updaterd) 1-1-1 (updaterd meta_mismatched) 1-1-2 (updaterd size_exceeded) 1-1-3 (updaterd udp_mismatched) |
Код ошибки актуален для приставок на OC Linux. Невозможно обновить прошивку, ошибка работы сервиса updaterd. Доп. код ошибки:0 — общая ошибка, причина не установлена; 1 — мета-информация в файле ПО не подходит; 2 — размер прошивки превышает 80Mb; 3 — в одной multicast-группе транслируется сразу несколько прошивок. |
|
1-2 (updater aosp) | Ошибка во встроенной системе обновления прошивки — Android (Wink+ OTT) | 1. Перезагрузите приставку
2 Сбросьте на заводские настройки Так же можно продолжить использование старой версии ПО. |
1-3 (player)
1-3-0 (player internal_error) 1-3-1 (player start_failed) 1-3-2 (player playback_stalled) 1-3-3 (player invalid_url) 1-3-4 (player manifest_parse) 1-3-5 (player vmx_cas_error) 1-3-6 (player vmx_drm_error) 1-3-7 (player wv_drm_error) 1-3-8 (player unsupported_codec) 1-3-9 (player hls_synchronization) |
Внутренние ошибки плеера.
Доп. код ошибки: 1 — ошибка запуска воспроизведения из-за сработавшего таймаута. В течение 10 секунд плеер несколько раз пробует запустить воспроизведение канала; 2 — остановка воспроизведения из-за пропадания трансляции. Может появиться после затянувшейся буферизации; 3 — некорректный URL-адрес для воспроизведения телеканала. Если ошибка выскочила при попытке открыть файл с флешки — значит файл не доступен; 4 — ошибка доступа или чтения Manifest файла; 5 — ошибка от библиотеки Verimatrix CAS (IPTV); 6 — ошибка от библиотеки Verimatrix DRM (OTT); 7 — ошибка от библиотеки Widevine DRM (OTT); 8 — неподдерживаемый кодек; 9 — ошибка синхронизации профилей в HLS. |
1. Перезагрузить приставку
2. Проверить настройки роутера 3. В некоторых случаях помогает сброс приставки Если не помогло – обращаться на техподдержку |
1-4 (bluetooth) | Ошибка Bluetooth (например, обновление прошивки пульта) | 1. Повторите попытку
2. Перезагрузите приставку 3. Сбросьте на заводские настройки |
1-5 (netswitchd) | Ошибка взаимодействия приложения Wink с сетевым сервисом netswitchd, который управлет переключением сетевых интерфейсов.
Доп. код ошибки: |
1. Перезагрузите приставку
2. Сбросьте на заводские настройки |
1-6 (dev)
1-6-0 (dev) 1-6-1 (dev mac) 1-6-2 (dev session) |
Критическая ошибка устройства.
Чаще всего программная ошибка или даже аппаратный сбой. Доп. коды ошибки: |
1. Перезагрузите приставку
2. Сбросьте на заводские настройки 3. Если не помогло — несите устройство в Сервисный Центр на диагностику |
Сетевые ошибки Ростелеком:
Тип ошибки | Описание | Что делать |
2-0 (network) | Общая сетевая ошибка, выдаётся в тех случаях, если не удаётся конкретизировать причину | 1. Убедитесь, что ТВ-приставка подключена к сетевому оборудованию
2. Проверьте сетевое подключение и перезагрузите приставку 3. Перезагрузите роутер |
2-1 (no connection) | Нет линка
(Она же ошибка 10001) |
1. Убедитесь, что ТВ-приставка подключена к сетевому оборудованию
2. Проверьте что сетевой кабель подключен к роутеру и роутер включен 3. Проверьте сетевой кабель на наличие повреждений 4. Попробуйте переключить приставку в другой порт роутера, чтобы проверить поднимется там линк или нет. |
2-2 (dhcp) | Сетевые настройки не получены от DHCP-сервера. | 1. Проверьте сетевое подключение и перезагрузите приставку/роутер
2. Проверьте корректность настроек роутера. Если всё в норме, то причина может быть со стороны Ростелеком (настройки порта коммутатора) |
2-3 (dns nc)2-3 (dns rdm) | Адрес сервера не может быть определён. В скобках уточняется сервер значением из словаря | 1. Проверьте сетевые настройки, какой DNS используется. Если прописан какой-то статический адрес — сбросьте на динамический (DHCP)
2. Проверьте сетевое подключение и перезагрузить сначала роутер, затем приставку Возможны глобальные проблемы с DNS-сервером со стороны Ростелеком. |
2-4 (ntp) | Не удаётся установить время на приставке. | Проверьте сетевое подключение и перезагрузить сначала роутер, затем приставку
Возможны глобальные проблемы с DNS-сервером со стороны оборудования провайдера. |
2-5 (timeout app)
2-5 (timeout fw) |
Таймаут соединения с сервером. В скобках уточняется сервер значением из словаря | Проверьте сетевое подключение и перезагрузите сначала роутер, затем приставку
Если со стороны оборудования доступа проблем нет — скорее всего проблемы на сети оператора. |
2-6 (refused pay)
2-6 (refused apk) |
Сбой соединения с сервером. В скобках уточняется сервер значением из словаря | Перезагрузите сначала роутер, затем приставку
Если перезагрузка не помогла — звоните на техподдержку. Чаще всего это проблема глобального характера на стороне сервера |
2-7 (route nc)
2-7 (route app) |
Нет маршрута до сервера. В скобках уточняется сервер значением из словаря | Проблема сетевого характера на уровне оборудования филиала, решается только обращением в техподдержку Ростелеком. |
2-8 (ssl nc)
2-8 (ssl aosp) |
Не удаётся установить SSL -соединение с сервером Wink | 1. Перезагрузить роутер и ТВ-приёмник.
2. Проверить настройки IPTV на роутере; 3. Выполнить сброс приставки Винк на заводские настройки Если не помог ни один из вариантов — то сдавать в техподдержку. |
2-9 (multicast_unavailable)
2-9-1 (multicast_unavailable) 2-9-2 (multicast_unavailable) |
Multicast-поток недоступен.
Ошибка появится если при переключении канала или во время просмотра данные multicast-потока не поступали в течение 3 секунд. Доп. коды ошибки: |
1. Проверьте работает ли трансляция на соседних каналах. Если недоступен только один или два канала — возможны технические работы.
2. Если недоступны все ТВ-каналы — перезагрузите приставку и роутер. 3. Проверьте настройки IPTV на роутере. 4.Сбросьте приставку на заводские настройки. Обратитесь в техподдержку. Возможны проблемы с сетевым оборудование провайдера. В некоторых случаях помогает повторная инициализация приставки. |
Ошибки сервера Ростелеком:
Тип | Описание | Что делать |
3-1-500 (http dis) | Ошибка с HTTP статус-кодом от балансировщика | Перезагрузить приставку. Если не помогает – звонить на техподдержку, проблема на серверном оборудовании. |
3-2 (api dis) | Невозможно получить настройки от балансировщика, либо получен пустой ответ | Перезагрузить приставку. Если не помогает – звонить на техподдержку, проблема на серверном оборудовании. |
3-3-500 (http nc) | Получена ошибка от сервера NC с HTTP статус-кодом, но без формализованного содержания в теле ответа | 1. Закрыть окно ошибки и попробовать продолжить работу.
2. Перезагрузить приставку. 3. Звонить на техподдержку. |
3-4-3000025 (api nc) | Получена ошибка в ответе NC API | 1. Закрыть окно ошибки и попробовать продолжить просмотр дальше.
2. Перезагрузить приставку. 3. Звонить на техподдержку. |
3-5-500 (http rdm) | Получена ошибка от сервера RDM с HTTP статус-кодом, но без формализованного содержания в теле ответа | Звонить на техподдержку. |
3-6-3000025 (api rdm) | Получена ошибка в ответе RDM API | Звонить на техподдержку. |
3-7-404 (http fw) | Получена http-ошибка при скачивании файла прошивки | Звонить на техподдержку. |
3-8-404 (http rn) | Получена http-ошибка при запросе release notes | Звонить на техподдержку. |
3-9-500 (http app) | Получена ошибка от сервера AppStore с HTTP статус-кодом, но без формализованного содержания в теле ответа | 1. Закрыть окно ошибки и попробовать продолжить просмотр дальше.
2. Перезагрузить приставку. 3. Звонить на техподдержку. |
3-10-3000025 (api app) | Получена ошибка в ответе AppStore API | 1. Закрыть окно ошибки и попробовать продолжить просмотр дальше.
2. Перезагрузить приставку. 3. Звонить на техподдержку. |
3-11-404 (http apk) | Получена http-ошибка при скачивании файла приложения | Звонить на техподдержку. |
3-12-404 (http img) | Получена http-ошибка при запросе файла изображения | Звонить на техподдержку. |
3-13-500 (http pay) | Получена ошибка от сервера платежей с HTTP статус-кодом, но без формализованного содержания в теле ответа | 1. Закрыть окно ошибки и попробовать продолжить просмотр дальше.
2. Перезагрузить приставку. 3. Звонить на техподдержку. |
3-14-102 (api pay) | Получена ошибка в ответе платёжного API. | 1. Закрыть окно ошибки и попробовать продолжить просмотр дальше.
2. Перезагрузить приставку. 3. Звонить на техподдержку. |
3-20-404 (http aosp) | Получена http-ошибка при отправке запроса в aosp.wink.ru | 1. Закрыть окно ошибки и попробовать продолжить работу
2. Перезагрузить ТВ приставку 3. Обратиться в техподдержку |
3-22-404 (http manifest)
3-22-404 (http chunk) |
Получена http-ошибка при запросе Media контента (манифест файлы и чанки, самостоятельные файлы, например, splash) | 1. Перезапустить контент 2. Проверить то же самое на другом подобном контенте 3. Перезагрузить ТВ приставку. Если не поможет — надо проверять работу услуги с тестовой приставкой. |
Прочие ошибки воспроизведения Wink
Код ошибки 10001 — «Что-то пошло не так. Убедитесь что приставка подключена к сетевому оборудованию». старое обозначение ошибки 2-1 «Нет линка» (см. таблицу)
Код ошибки 20003 — инструкция по устранению проблемы здесь — ссылка.
Ошибка 106 (Обновление завершилось ошибкой) — Приставка получила указание от сервера о необходимости обновления прошивки, но не может эту прошивку установить. Начать надо с проверки настроек IPTV на роутере. Если есть файл со свежей прошивкой — то можно обновиться с помощью USB-флешки. Так же ошибка 106 часто возникает на взломанных приставках с модифицированным ПО.
Геоблокировка — «Wink ещё не работает на этой территории». Платформа работает не во всех уголках мира и в зависимости от геополитической обстановки возможны ограничения. Если Вы получаете такую ошибку, находясь при этом в России — проверьте не используется ли Вами сервис «VPN». В некоторых случаях пользователи поднимают VPN-туннель на роутере и потом удивляются почему часть сервисов не работает.
Аккаунт заблокирован. Причиной может быть одна из следующих блокировок:
-Финансовая блокировка
-Добровольная блокировка
— Переезд
— Блокировка по невыясненным причинам
— Блокировка по подозрению во фроде
Решение тут только одно — обращаться в абонентскую службу ПАО Ростелеком и снимать блокировку.
Требуется авторизация. Перезагрузите приставку. Если всё то же самое, то нужно заново ввести логин и пароль для услуги «Интерактивное ТВ», которое Вам выдали при заключении договора.
Устаревшая версия -«Мы больше не поддерживаем эту версию приложения». Необходимо обновить установленную версию ПО Wink. Для этого обычно достаточно перезагрузить приставку. При запуске она автоматически проверяет наличие новой версии на сервере и, если такая есть, то устанавливает её автоматически.
Обмен фильма невозможен. Данный видеоконтент не может использоваться. Попробуйте выбрать другой фильм.
Обновляем Wink — идёт обновление ПО Wink. оставьте ТВ-приставку включенной и не выключайте. После обновления она сама перезагрузится.
Повторите попытку позже — «Превышен лимит попыток ввода PIN-кода». Выключите приставку. Через 15-20 минут включить и попробуйте снова.
P.S.: На данный момент это наиболее полное и подробное описание ошибок платформы Wink, появляющихся на приставках интерактивного ТВ Ростелеком. Если Вы столкнулись с какой-то новой ошибкой — пишите в нашу группу ВК и прикладывайте скриншот — будем вместе пробовать разобраться.
Wink является кино-платформой от провайдера Ростелеком, которая доступна на территории РФ. Она не так давно появилась, и в её работе часто происходят некоторые ошибки. Наиболее распространённые из них – полная недоступность определённых опций, медленная работа, перебои в загрузке контента.
Лучшие решения, чтобы устранить проблему:
Содержание
- Какие бывают проблемы?
- Ошибка при воспроизведении
- Ошибка при инициализации приложения
- Блокировка IP-адреса
- Ошибка в заполнении формы
- Не показываются каналы
- Код ошибки 6000000
- Невозможно синхронизировать время
- Ошибка 13
- Код ошибки 20001
- Ошибка 10001
- Другие проблемы
- Что делать, если не работает Wink на телевизоре?
- Перезагрузка телевизора
- Переустановка приложения
- Смена точки доступа
- Смена адреса DNS-сервера
- Сброс Smart Hub
- Сброс телевизора
- Как добиться расширения полномочий в Wink?
- Что делать, если не работает Wink на компьютере?
Какие бывают проблемы?
Обычно причина торможения и не функционирования программы в том, что в ней проводятся технические работы по совершенствованию технологии. Но бывают и иные.
Ошибка при воспроизведении
Иногда бывает, что приложение удалось скачать и установить без проблем, но видео в нём почему-то не воспроизводятся или тормозят – возникает ошибка.
Программа в этом случае автоматически ищет проблемные алгоритмы и сообщает о них в виде числовых или буквенных кодов. На экране отображается результат диагностики – знак и номер имеющейся ошибки. С их помощью можно легко определить причину выхода из строя программы и устранить её самостоятельно.
На мобильных устройствах может возникнуть ошибка под названием «Устройство не поддерживает воспроизведение зашифрованного контента».
Если при просмотре какого-либо контента появляется окно с такой ошибкой, это означает, что устройство было рутировано. Чтобы приложение могло правильно отображать фильмы, на устройстве должен быть отключен Root-режим (защита от копирования, препятствующая доступу к контенту).
Если вы не знаете, есть ли у вашего смартфона / планшета Root, установите программу Simply Unroot. Она помогает выявить его и удалить в случае необходимости.
Ошибка при инициализации приложения
Когда система не может распознать инициализацию программного обеспечения, обновите либо переустановите его. Если обновление и переустановка не помогли, для решения проблемы пропишите DNS в настройках TB-приёмника:
- Перейдите в раздел «Сеть».
- Выберите «Состояние сети».
- Зайдите в «Настройки IP».
- Щёлкните «Настройки DNS».
- Нажмите на пункт «Ввести вручную».
- В появившемся поле введите «8.8.8.8».
- Кликните «Готово».
- Щёлкните «ОК», чтобы подтвердить операцию.
После завершения описанных манипуляций выдерните шнур телевизора из розетки секунд на 30. Затем подсоедините обратно, включите пультом TB и проверьте работу приложения.
Блокировка IP-адреса
Ещё одна возможная причина перебоев в работе Wink – блокировка провайдером IP-адреса. Попробуйте сменить точку беспроводного доступа и подключить к ней TB-приёмник. Это должно решить проблему.
Если данные действия не помогли, проблема кроется в самом интернет-провайдере либо в DNS-сервере. Для решения проблемы свяжитесь с провайдером по телефону, указанному в заключённом договоре на обслуживание. Если с его сторон неполадок нет, смените адрес DNS-сервера (инструкция есть ниже).
Ошибка в заполнении формы
Если произошла ошибка при заполнении формы, не выискивайте неточность в море данных. Лучше всего перезагрузите TB-устройство и приступите к подключению Wink с самого начала.
Не показываются каналы
При использовании платформы Wink можно столкнуться с несколькими проблемами, из-за которых полностью либо частично закрыт доступ к TB-каналам. Самые распространённые причины и их решения:
- Доступны только первые несколько каналов. В этом случае перезапустите свои устройства – TB и приставку. Если не помогло, позвоните в техническую поддержку. Связаться с ней можно по номеру +78001000800. Опишите специалисту свою проблему, и он проверит, подключены ли у вас нужные пакеты.
- Вместо некоторых каналов появляется чёрный экран. Первым делом также перезапустите устройства. Если вы разбираетесь в технике и хотите решить проблему самостоятельно, проверьте настройки модема. Если это не помогло, или соответствующих навыков нет, позвоните в службу поддержки.
- Не работает дополнительный пакет TB-каналов. Вероятнее всего, его ещё просто не успели вам подключить. Обновление пакетов пользователей происходит раз в 30 минут. Если времени прошло больше, а заветные каналы на горизонте так и не появились, смело звоните в поддержку.
- Появляется просьба расширить подписку. Скорее всего, данный канал не входит в вашу подписку. Попробуйте подождать около получаса, проверить свой тарифный план (есть ли в нём этот канал). Если да, по окончании названного времени включите канал ещё раз, и если он всё ещё не показывает, звоните в поддержку.
- Некоторые каналы постоянно требуют ПИН-код. Чтобы устранить неудобство, в настройках присвойте себе уровень доступа «Взрослый». Делается это через «Родительский контроль» на главном экране. Скорее всего, сейчас стоит ограничение для детей.
ПИН-код в данном случае запрашивается не только для каналов эротического характера, но и для тех, где транслируется контент для аудитории 16+ (телеканалы «Ю» и «Пятница», например).
Также проверьте правильность настроек даты и времени на TB-приёмнике. Возможно, требуется изменить часовой пояс.
Код ошибки 6000000
Ошибка с кодировкой 6000000 означает, что нет подключения к сети интернет. Проверьте правильность подключения кабеля либо сетевое соединение. Перезагрузите маршрутизатор (отключите и снова включите его).
Невозможно синхронизировать время
Некоторые TB-каналы в приложении отображаются только по московскому времени, и ничего с этим не поделаешь. Связано такое с просьбами правообладателей, из-за которых программы нельзя транслировать по местному времени. Приложение Wink тут ни при чём.
На данный момент список таких телеканалов выглядит следующим образом:
- 1 канал;
- THT;
- Матч TB;
- TB-3;
- Пятница;
- Супер;
- THT4;
- Россия 24;
- Известия;
- 5 канал;
- PEH TB;
- CTC Love;
- Че;
- МИР;
- Спас;
- Звезда;
- МУЗ TB;
- CTC;
- Домашний.
На приставках с услугой «интерактивного TB» эти каналы транслируются по местному времени.
Ошибка 13
В большинстве случаев код ошибки 13 связан с недостатком средств на личном счёте пользователя. Это случается по двум причинам:
- по халатности абонента, который забыл вовремя внести оплату;
- из-за сбоя биллинга по вине провайдера (подождите около часа, и если ничего не наладится, обращайтесь в техподдержку).
Код ошибки 20001
Данная ошибка возникает у тех, кто пользуется приставкой Wink. Она носит системный характер и может быть связана с любыми сбоями в её работе. Точно определить причину без помощи специалистов невозможно. Чаще всего встречаются следующие:
- приставка устарела / сломалась и требует ремонта (провайдер должен бесплатно заменить её на новую);
- отсутствует подключение к сети интернет;
- проблема со стороны провайдера (подождите, пока эксперты решат проблему);
- в системе оборудования произошёл небольшой сбой, который можно устранить перезагрузкой;
- неправильно установленные настройки на TB-устройстве;
- кабели неисправны либо не очень плотно прилегают к разъёмам TB, приставки либо роутера.
Пришло время обновить приставку Винк Ростелеком:
Ошибка 10001
В большинстве случаев ошибка 10001 означает, что пользователь сбросил параметры конфигурации Wi-Fi роутера до заводских настроек. Авторизуйтесь в личном кабинете на официальном сайте Ростелекома (https://lk-rostelecom.ru/) и проверьте все установленные настройки.
Другие проблемы
Входящие в этот раздел проблемы можно решить перезапуском устройства, переподключением к другому источнику интернета либо обновлением приложения Wink до последней версии. Перечисленными способами решаются следующие проблемы:
- Wink тормозит либо вылетает;
- плохое качество изображения;
- пропадает звук (если ничего не помогло, дело в неисправности телевизора);
- не работает поиск внутри приложения.
Что делать, если не работает Wink на телевизоре?
Если Wink не работает на Smart TV, первым делом убедитесь, что опция была правильно подключена. Верный алгоритм подключения выглядит следующим образом:
- Пользователь прошёл этап регистрации.
- Клиент оплатил пакет либо ввёл ранее полученный промокод для использования услуги.
Если программа по-прежнему не запускается и на телевизоре отображается чёрный экран, выполните такие действия:
- перезапустите свой ТВ;
- переустановите само приложение;
- переустановить сервис;
- смените точку доступа к интернету;
- измените адрес DNS-сервера;
- сбросьте настройки Smart Hub, сделав их “по умолчанию”;
- сбросьте настройки телевизора.
Подробнее обо всех этих способах восстановления функционирования приложения Wink читайте ниже. Они не сложные и не требуют дополнительных технических навыков.
Перезагрузка телевизора
Это классический способ исправления неисправностей, к которому прибегают в числе первых. В 70% случаев данной манипуляции достаточно, чтобы привести всё в норму.
Если платформа внезапно перестала функционировать, перезапустите телевизор и отключите устройство от розетки на 3-5 минут. Затем подключите его к питанию снова и попробуйте запустить Wink. Всё должно заработать. Если проблема осталась нерешённой, переходите к следующим шагам.
Переустановка приложения
Если перезапуск телевизора не помог, попробуйте переустановить на нём приложение Wink.
Программа поддерживается только телевизорами, выпущенными до 2015 года.
Чтобы точно узнать модель и год выпуска своего устройства, воспользуйтесь одним из следующих способов:
- посмотрите заводскую этикетку, которая должна быть наклеена на задней стенке ТВ-приёмника;
- откройте инструкцию к ТВ и найдите там необходимую информацию;
- зайдите на официальный сайт производителя своего ТВ и посмотрите точную модель там – в личном кабинете.
Убедившись, что ТВ-приёмник в принципе поддерживает данную программу, переустановите её, следуя инструкции:
- Наведите курсор на пункт «APPS» на панели Smart и нажмите кнопку в центре пульта дистанционного управления, чтобы открыть службу.
- Выберите приложение Wink из открывшегося перечня программ. Для этого наведите на него курсор и зажмите центральную кнопку пульта, пока не появится дополнительное меню.
- В открывшемся меню кликните на пункт «Повторная установка». Далее приложение заново установится без вашего участия.
Если всё сделано правильно, приложение успешно переустанавливается. Время установки зависит от скорости подключённого к ТВ-приёмнику интернета.
Смена точки доступа
Чтобы восстановить работоспособность приложения, смените точку доступа. Лучший способ решить эту проблему – создать точку на устройстве и подключиться к ней. Если после выполнения таких операций функция работает нормально, значит, проблема заключается в интернет-провайдере.
Смена адреса DNS-сервера
Если проблемы с провайдером обнаружены не были, проверьте DNS-сервер. Делается это следующим образом:
- Откройте главное меню настроек TB-приёмника.
- Выполните переход в раздел «Общие».
- Перейдите в пункт «Сеть» и «Состояние сети». Проверьте здесь факт подключения TB к сети Интернет.
- Выберите раздел «Настройки IP».
- Перейдите в пункт «Настройки DNS» и активируйте в нём функцию «Ввести вручную».
- Введите “8.8.8.8” в поле «Сервис DNS». Если комбинация не подходит, попробуйте ввести такую – “208.67.222.222”.
- Кликните «Готово» и вернитесь в главное меню.
- Нажмите «Сохранить изменения».
После проделанных манипуляций убедитесь в наличии интернета на ТВ, перезапустите телевизор и попробуйте снова включить приложение Wink.
Сброс Smart Hub
Сбросив настройки Smart Hub, вы обнулите все установленные ранее параметры программы и удалите установленные на ТВ приложения. Алгоритм действий при сбросе настроек Smart Hub:
- Зайдите в главное меню TB-приёмника и перейдите в раздел «Поддержка».
- Выберите пункт «Самодиагностика», а в нём – «Сброс Smart Hub».
- Укажите запрашиваемый системой ПИН-код (если он не менялся пользователем, скорее всего подойдёт комбинация “0000”).
- Подождите несколько минут, пока система обработает информацию и сбросит настройки.
- Вернитесь обратно в «Главное меню».
- Поставьте галочку, обозначающую согласие с установленными условиями.
- Войдите в свою учётную запись.
- Выберите Wink в списке приложений, проведите его установку.
- Запустите установленное приложение.
Прежде чем принимать такие радикальные меры, убедитесь, что телевизор сертифицирован в Российской Федерации. Если вы сбросите настройки на телевизоре без сертификата, можете полностью заблокировать устройство.
Обратите внимание на заводскую этикетку. Серийный номер сертифицированного устройства заканчивается на «XRU» и имеет маркировку «EAC».
Сброс телевизора
Самый радикальный шаг, переходят к которому в крайнем случае – если все остальные способы не дали результатов, и только если вы абсолютно уверены, что ваше TB-устройство обязано поддерживать приложение Wink.
Данным способом вы не только решите проблему, связанную с неполадками приложения, но и восстановите заводские настройки телевизора.
Как сбросить настройки:
- Через главное меню выйдите в “Общие” настройки.
- Кликните “Сброс настроек до заводских”.
- Согласитесь с тем, что все настройки будут сброшены, нажав “Да”.
- Дождитесь окончания сброса и повторите попытку установить приложение.
Как добиться расширения полномочий в Wink?
Иногда, чтобы приложение Wink работало корректно, и была возможность пользоваться им в полной мере, требуется расширение полномочий. Интерфейс может разниться в зависимости от устройства, на котором сервис установлен, но алгоритм действий везде одинаков.
Для максимального доступа последовательность действий следующая:
- Зайдите в главное меню устройства и перейдите в раздел «Родительский контроль».
- Перейдите в раздел «Выбор профиля». Наведите курсор на уровень «Основной» и нажмите «Редактировать».
- Перейдите в «Отображение контента» и выберите здесь вариант «Показать».
- Перейдите к «Возрастным ограничениям» и выберите здесь «18+». Снимите галочку с пункта о запрашивании ПИН-кода.
- Щёлкните на пульте «ОК», и все изменения сохранятся. Действующий уровень доступа изменится на «Текущий».
После сохранения изменений зайдите в «Мои настройки». Вернитесь в раздел «Уровень доступа» и проверьте, установлено ли там значение «18+».
Другие популярные решения для просмотра онлайн кино тетатров:
Что делать, если не работает Wink на компьютере?
Программа Wink на ПК работает в качестве веб-сайта. Чтобы использовать приложение Wink на своём компьютере, достаточно ввести адрес Wink.rt.ru в браузерной строке. За исключением технических работ на сервисе, причин для ошибок в функционировании приложения только две:
- Неисправное подключение к интернету. Решение – перезапуск маршрутизатора.
- Проблемы в работе самого ПК. Решение – перезапустить компьютер, проверить его на вирусы.
Сервис Wink, созданный Ростелекомом, – это мультимедийный видеопортал. Если вы впервые подключаете приложение к телевизору, следуйте инструкциям и внимательно следите за правильностью вводимой информации. Тогда Wink позволит вам смотреть видео с качественным изображением и звуком без каких-либо проблем.
Содержание
- Спокойствие, только спокойствие
- После загрузки Wink сразу же черный экран
- Зависает изображение («Произошла ошибка при загрузке данных»)
- Рассинхрон изображения и звука
- Ошибка «Playback start timeout»
- Ошибка «Player error not supported format»
- Не работает услуга «Управление просмотром»
- Можно ли установить Wink минуя SmartHub?
- Ошибка «Transition to state»
- Еще про Wink и не только:
Зачастую приложения для Smart TV и операционная система телевизора представляют собой симбиоз ежа и ужа. Иначе говоря — колючая проволока. Проблемы связаны не только и не столько с кривыми руками разработчиков, сколько с постоянными обновлениями самой ОС на телевизоре. Сегодня мы собрали настоящую антологию проблем c приложением Wink телевизорами Samsung Smart TV
Спокойствие, только спокойствие
Техническая поддержка Wink достаточно быстро реагирует на всякого рода инциденты, связанные с железом. Но не всё так просто — зачастую приходится работать с сторонними вендорами, которые не очень-то охотно бросают все дела и начинают помогать разработчикам каких-то там приложений для их телевизоровов. Основная статья про Wink у нас здесь. Там же ты можешь ознакомиться со списком поддерживаемых устройств (в т.ч. на платформе Tizen). Нужно иметь ввиду, что Samsung выпускает обновления ПО только для ТВ не старше трёх лет, а это тревожный звоночек для владельцев старых ТВ
Проблема может быть не только в приложении, но и в нестабильном интернет-соединении или в аппаратной части ТВ. Причем последнее — не редкость. К счастью, квалифицированные сервисные центры можно легко отличить от неказистых фирм-однодневок. У хороших СЦ всегда в наличии имеются практически все запасные части и их специалисты могут и умеют проводить сложный технический ремонт матрицы, устранять проблемы со звуком, цветопередачей и питанием ТВ. Полный перечень можно посмотреть здесь — https://mastersky.kz/desktops/ремонт-телевизоров-samsung
Первым делом — проверьте скорость интернет соединения. Рекомендуемая разработчиками скорость стабильной работы — 25 мбит/с. Если проблема остается, то попробуйте следующий лайфхак: при появлении черного экрана нажмите кнопку «Back» (в некоторых моделях «Return») — должна открыться основное окно Wink. Скорее всего, данный баг пофиксят в следующих ревизиях приложения, но пока можно использовать как временное решение
Зависает изображение («Произошла ошибка при загрузке данных»)
Происходит постоянное зависание картинки, которая потом отвисает автоматически, либо отматывается назад (повторяется) или показывает отрезками. Для начала проверьте скорость, открыв на телевизоре страницу http://check.cctnet.ru/rt. Она покажет вашу текущую скорость — она должна быть не менее 25 мбит/с. Если скорость соответствет, то обновите приложение. Такая ситуация наблюдается на версиях 5.21.4 и 5.25.0.
Рассинхрон изображения и звука
После обновления приложения до версии 5.21.4 у многих пользователей Wink начались проблемы со звуком и изображением — картинка зависает, но звук продолжает воспроизводиться или перематывается назад, при этом никакой буферизации не наблюдается. Проблема таких перескакиваний и сбивок кроется в некорректном обработке потока видео-контента. Насколько нам известно, скоро проблема должна быть устранена. Следите за обновлением приложения
Ошибка «Playback start timeout»
Многие путают данную ошибку с приложением на SmartTV. Если у вас много устройств на мультискрине, то знайте: данная ошибка относится к приставке, а не к приложению на телевизоре. Но чтобы не прыгать из статьи в статью, то держи солюшн — надо скинуть настройки на приставке до заводских
- Заходим в главное меню через пульт приставки (кнопка «МЕНЮ»)
- Переходим в раздел «Настройки» и ищем пункт «Хранилище и сброс»
- Выбираем «Заводские настройки — удалить все»
- После того как приставка перезагрузится, необходимо заново авторизоваться по номеру телефона, который был привязан к учетной записи
Ошибка «Player error not supported format»
Данная ошибка имеет еще одну версию — player error not supported operation. Возникает при просмотре 4К-контента или даже на HD-каналах, в основном, на моделях телевизоров 2020 года (имеют литеру T или TU). Ждите обновление приложения — проблема пока в стадии решения у разработчиков
Не работает услуга «Управление просмотром»
На некоторых «старых» ТВ в виду отсутствия обновлений со стороны производителя услуга перестаёт работать. Мы писали в начале, что Samsung крайне неохотно суппортит свои старые модели. Помните о чем мы писали в начале статьи про обновления? Вот это оно и есть. Что ещё может быть:
- Заново авторизуйтесь через Мультискрин (раздел «Моё» в приложении). Чтобы привязка не слетела, когда закончите просмотр — выйдите в главное меню приложения. Так же рекомендуется выключать ТВ с пульта.
- Если вы живетё в Москве, то это региональные ограничения правообладателей именно для просмотра с приложения. Тут Ростелеком действительно не при чем — придётся покупать приставку, если так необходима эта услуга.
Можно ли установить Wink минуя SmartHub?
Если у вас по какой-то причине нет доступа к сервису SmartHub, установить приложение не получится. Чтобы установить приложение вручную через Tizen Studio вам необходимы файлы самого приложения, но для платформы Tizen их нет. Установочные файлы доступны только для платформы AndroidTV. Их можно попросить прислать через техническую поддержку.
Ошибка «Transition to state»
Варианта решения всего два. Первый — удалите данные приложения Wink. Это делается через меню «Моё — Настройки — Сброс данных приложения». После выполнения данной операции перезагрузите телевизор по питанию (из розетки). Второй — удалить приложение Wink из Samsung Apps и заново установить
Как вам статья?
Винк – интерактивный онлайн-сервис от российского провайдера Ростелеком, позволяющий смотреть фильмы, сериалы, ТВ-каналы, трансляции спортивных мероприятий, и слушать аудиокниги. Сервис начал свою работу относительно недавно, и многие пользователи столкнулись с проблемой, когда Wink не работает на телевизорах и мобильных устройствах. Далее будут рассмотрены основные причины неполадок в Wink и способы устранения ошибок.
Содержание
- 1 Способы устранения
- 1.1 Перезагрузка телевизора
- 1.2 Переустановка Wink
- 1.3 Смена адреса DNS-сервера
- 1.4 Сброс Smart Hub
- 1.5 Сброс телевизора
- 2 Прочие возможные ошибки
- 2.1 Ошибка, возникшая при заполнении формы
- 2.2 Ошибка с кодом 6000000
- 2.3 Ошибка, связанная с инициализацией
- 2.4 Ошибка во время воспроизведения
- 3 Заключение
Способы устранения
Если Винк не работает на Андроид или на телевизорах, оснащенных Смарт TV, стоит воспользоваться одним из перечисленных ниже способов устранения проблемы.
Перезагрузка телевизора
Для перезагрузки телевизора нужно отключить его от электросети на несколько минут, после чего вставить вилку в розетку, снова включить телевизор и выполнить повторный запуск приложения Wink. Если данный способ поможет устранить проблему, можно сразу же просматривать фильмы, сериалы и ТВ-передачи. В случае отсутствия положительных результатов стоит переустановить приложение.
Переустановка Wink
Переустановка приложения позволяет решить проблему с запуском на телевизорах марки Samsung, оснащенных Smart TV (данный способ актуален только для устройств, выпущенных с 2015 по 2018 год серий LS, Q, N, M, J и К). Для получения информации о модели и дате производства следует воспользоваться одним из следующих способов:
- Посмотреть на заводскую этикетку (стикер), которая находится на обратной стороне корпуса устройства.
- Найти в меню раздел «Поддержка» и выбрать пункт «Обращение в Самсунг». Графа «Код модели» отображает информацию о годе выпуска и модели устройства.
Для переустановки приложения нужно зайти в панель «APPS» и нажать на центральную кнопку на пульте управления. В списке программ необходимо выбрать неработающий сервис, после чего зажать главную кнопку до тех пор, пока на экране не появится меню дополнительных настроек. Остается нажать на «Повторную остановку». В случае, если все действия были выполнены правильно, переустановка приложения пройдет без каких-либо затруднений.
Смена адреса DNS-сервера
В случае отсутствия проблем со стороны провайдера нужно осуществить проверку DNS-сервера, выполнив следующие действия:
- Открыть раздел «Настройки».
- Зайти в меню «Общие», после чего в «Состояние сети».
- Далее необходимо убедиться в том, что подключение к интернету установлено.
- Затем выбрать «Настройки IP-адреса».
- В «Настройках DNS» нужно активировать опцию ручных настроек.
- В графе «DNS-сервер» потребуется указать следующие параметры: 208.67.222.222 либо 8.8.8.8.
- Остается нажать на кнопку «Готово», после чего вернуться обратно в меню и сохранить изменения.
После выполнения описанного выше алгоритма нужно убедиться в том, что телевизор подключен к интернету, и перезагрузить его.
Сброс Smart Hub
В результате сброса настроек Smart Hub удаляется приложение и все ошибки, связанные с его работой – происходит откат до заводских установок.
Перед тем, как делать сброс, нужно убедиться в том, что телевизор обладает сертификацией для РФ. Необходимо обратить внимание на заводской стикер (этикетку). Серийные номера устройств, прошедших сертификацию, заканчиваются на «XRU» и помечены знаком «EAC». Если телевизор не прошел сертификацию, то сброс настроек Smart Hub приведет к его блокировке.
Для того, чтобы сбросить настройки, нужно выполнить следующие действия:
- Выбрать «Поддержку» в разделе настроек.
- В подпункте «Самодиагностика» сбросить Smart Hub, нажав на соответствующую клавишу.
- Добавить PIN-код телевизора.
- Нужно дождаться завершения процесса сброса настроек, после чего выйти в главный раздел.
- Затем необходимо зайти на панель «APPS» и выполнить активацию первоначальной установки, согласившись с условиями использования.
- Авторизовавшись в учетной записи устройства нужно отыскать Wink и установить программу.
Если вышеописанный алгоритм не привел к положительным результатам, и приложение по-прежнему не запускается, стоит перейти к следующему методу, а именно к полному сбросу настроек телевизора.
Сброс телевизора
Данным вариантом рекомендуется воспользоваться только в том случае, если все другие способы оказались неудачными. После сброса настроек будут удалены все установленные приложения и устройство совершит откат до заводских установок.
Прочие возможные ошибки
Если Wink перестал работать, нужно ознакомиться с перечнем ошибок, которые довольно часто наблюдаются в работе приложения.
Ошибка, возникшая при заполнении формы
В случае некорректно введенных данных приложение работать не будет. В подобной ситуации нужно заполнить форму, вбив правильную информацию, после чего перезагрузить устройство и выполнить повторный запуск Wink.
Ошибка с кодом 6000000
Ошибка 6000000 наблюдается в случае, если телевизор не подключается к сети. Необходимо проверить подключение кабеля и убедиться в том, что роутер находится в рабочем состоянии. Для этого потребуется подключить ноутбук или любой портативный гаджет к интернету. Если связь будет установлена – значит роутер исправен. Нужно перезагрузить его и повторить попытку подключения телевизора к сети.
Ошибка, связанная с инициализацией
Приложение Wink может не работать из-за ошибки инициализации. Если на экране отобразится надпись, уведомляющая о возникновении данной проблемы, нужно зайти в раздел настроек и выполнить следующие действия:
- Зайти в главное меню, а затем в «Состояние сети» либо «Сеть».
- Выбрать пункт «Настройки IP-адреса», после чего перейти в раздел «Настроек DNS» и активировать опцию ручного ввода.
- Затем в графе, содержащей нули, вбить комбинацию цифр 8.8.8.8.
- Для завершения процесса остается нажать на клавишу «Готово».
После устранения ошибки необходимо выключить устройство с помощью пульта дистанционного управления или кнопки на корпусе, а затем отсоединить вилку от розетки и выждать не меньше 15-20 секунд. Когда телевизор будет снова включен в сеть, нужно запустить приложение Wink. После устранения проблемы устройство должно функционировать без каких-либо сбоев и зависаний.
Ошибка во время воспроизведения
Пользователи Винк сталкивались с ошибкой, когда программа была скачана и установлена без затруднений, однако во время воспроизведения начинается торможение, появляются различные помехи и зависания. Приложение осуществляет поиск проблемных алгоритмов в автоматическом режиме и информирует пользователя о них в виде цифровых или буквенных кодов. Данные о результатах диагностики отображаются на экране, что позволяет выявить причину ошибки для последующего устранения.
Заключение
Винк – популярный онлайн-сервис от Ростелеком, с помощью которого можно смотреть TV-каналы, сериалы, фильмы, мультфильмы и трансляции различных спортивных мероприятий. В случае, если не работает Wink, стоит перезагрузить телевизор, переустановить приложение, сменить адрес DNS-сервера или сбросить Smart Hub. Если ни один из способов не поможет решить проблему, нужно сделать откат настроек телевизора до заводских установок
В компании Rollbar, которая занимается созданием инструментов для работы с ошибками в программах, решили проанализировать базу из более чем 1000 проектов на JavaScript и найти в них ошибки, которые встречаются чаще всего. В результате они сформировали список из 10 наиболее часто встречающихся ошибок, проанализировали причины их появления и рассказали о том, как их исправлять и избегать. Они полагают, что знакомство с этими ошибками поможет JS-разработчикам писать более качественный код.
Сегодня мы публикуем перевод их исследования.
Методика анализа
В наши дни данные — это всё, поэтому мы нашли, проанализировали и проранжировали ошибки, которые чаще всего встречаются в JavaScript-проектах. А именно, были собраны сведения об ошибках по каждому проекту, после чего было подсчитано количество ошибок каждого вида. Ошибки группировались по их контрольной сумме, методику вычисления которой можно найти здесь. При таком подходе, если, например, в одном проекте обнаружена некая ошибка, которая после этого найдена где-то ещё, такие ошибки группируют. Это позволяет, после анализа всех участвующих в исследовании проектов, получить краткую сводку по ошибкам, а не нечто вроде огромного лог-файла, с которым неудобно работать.
В ходе исследования особое внимание уделялось наиболее часто встречающимся ошибкам. Для того чтобы такие ошибки отобрать, их ранжировали по количеству проектов разных компаний, в которых они встречаются. Если бы в этот рейтинг входило лишь общее число появлений некоей ошибки, то ошибки, характерные для какого-нибудь очень крупного проекта, но редко встречающиеся в других проектах, исказили бы результаты.
Вот десять ошибок, которые были отобраны по результатам исследования. Они отсортированы по количеству проектов, в которых они встречаются.
Ошибки, которые встречаются в JS-проектах чаще всего
Названия ошибок представляют собой сокращённый вариант сообщения об ошибке, которое выдаёт система. Опора на системные сообщения позволяет легко идентифицировать ошибки при их возникновении. Сейчас мы проанализируем каждую из них, расскажем о том, что их вызывает, и о том, как с ними бороться.
1. Uncaught TypeError: Cannot read property
Если вы пишете программы на JavaScript, то вы, вероятно, встречались с этой ошибкой гораздо чаще, чем вам того хотелось бы. Подобная ошибка возникает, например, в Google Chrome при попытке прочитать свойство или вызвать метод неопределённой переменной, то есть той, которая имеет значение undefined
. Увидеть эту ошибку в действии можно с помощью консоли инструментов разработчика Chrome.
Ошибка Cannot read property
Эта ошибка может возникнуть по многим причинам, но чаще всего её вызывает неправильная инициализация состояния при рендеринге элемента пользовательского интерфейса. Взглянем на пример того, как подобное может произойти в реальном приложении. Тут мы используем React, но та же ошибка инициализации характерна для Angular, Vue и для любых других фреймворков.
class Quiz extends Component {
componentWillMount() {
axios.get('/thedata').then(res => {
this.setState({items: res.data});
});
}
render() {
return (
<ul>
{this.state.items.map(item =>
<li key={item.id}>{item.name}</li>
)}
</ul>
);
}
}
Тут надо обратить внимание на две важные вещи:
- В самом начале состояние компонента (то есть —
this.state
) представлено значениемundefined
. - При асинхронной загрузке данных компонент будет выведен как минимум один раз до того, как данные будут загружены, вне зависимости от того, будет ли это выполнено в
componentWillMount
или вcomponentDidMount
. Когда элементQuiz
выводится в первый раз, вthis.state.items
записаноundefined
. Это, в свою очередь, означает, чтоitemList
получает элементы, которые так же представлены значениемundefined
. Как результат, мы видим в консоли следующую ошибку:"Uncaught TypeError: Cannot read property ‘map’ of undefined"
.
Эту ошибку исправить несложно. Проще всего инициализировать состояние в конструкторе подходящими значениями по умолчанию.
class Quiz extends Component {
// Добавляем это:
constructor(props) {
super(props);
// Инициализируем состояние и задаём значения элементов по умолчанию
this.state = {
items: []
};
}
componentWillMount() {
axios.get('/thedata').then(res => {
this.setState({items: res.data});
});
}
render() {
return (
<ul>
{this.state.items.map(item =>
<li key={item.id}>{item.name}</li>
)}
</ul>
);
}
}
Код вашего приложения будет выглядеть иначе, но мы надеемся, что теперь вы знаете, как исправить эту ошибку в своём проекте и как избежать её появления. Если то, о чём шла речь, вам не подходит — возможно, вам поможет разбор следующих ошибок.
2. TypeError: ‘undefined’ is not an object (evaluating…
Эта ошибка возникает в браузере Safari при попытке прочесть свойство или вызвать метод неопределённого объекта. Взглянуть на эту ошибку можно с помощью консоли инструментов разработчика Safari. На самом деле, тут перед нами та же самая проблема, которую мы разбирали выше для Chrome, но в Safari она приводит к другому сообщению об ошибке.
Ошибка ‘undefined’ is not an object
Исправлять эту ошибку надо так же, как в предыдущем примере.
3. TypeError: null is not an object (evaluating
Эта ошибка возникает в Safari при попытке обратиться к методу или свойству переменной, представленной значением null
. Вот как это выглядит в консоли разработчика Safari.
Ошибка TypeError: null is not an object
Напомним, что в JavaScript null
и undefined
— это не одно и то же, именно поэтому мы видим разные сообщения об ошибках. Смысл значения undefined
, записанного в переменную, говорит о том, что переменной не назначено никакого значения, а null
указывает на пустое значение. Для того чтобы убедиться в том, что null
не равно undefined
, можно сравнить их с использованием оператора строгого равенства:
Сравнение undefined и null с помощью операторов нестрогого и строгого равенства
Одна из причин возникновения подобной ошибки в реальных приложениях заключается в попытке использования элемента DOM в JavaScript до загрузки элемента. Происходит это из-за того, что DOM API возвращает null
для ссылок на пустые объекты.
Любой JS-код, который работает с элементами DOM, должен выполняться после создания элементов DOM. Интерпретация JS-кода производится сверху вниз по мере появления его в HTML-документе. Поэтому если тег <script>
с программой окажется перед кодом, описывающим элементы DOM, программа будет выполнена в ходе разбора страницы до его завершения. Эта ошибка проявится, если элемент DOM, к которому обращаются из скрипта, не был создан до загрузки этого скрипта.
В следующем примере мы можем исправить проблему, добавив в код прослушиватель событий, который оповестит нас о том, что страница полностью загружена. После срабатывания обработчика события, добавленного с помощью addEventListener
, метод init()
сможет правильно работать с элементами DOM.
<script>
function init() {
var myButton = document.getElementById("myButton");
var myTextfield = document.getElementById("myTextfield");
myButton.onclick = function() {
var userName = myTextfield.value;
}
}
document.addEventListener('readystatechange', function() {
if (document.readyState === "complete") {
init();
}
});
</script>
<form>
<input type="text" id="myTextfield" placeholder="Type your name" />
<input type="button" id="myButton" value="Go" />
</form>
4. (unknown): Script error
Эта ошибка возникает в том случае, когда неперехваченная ошибка JavaScript пересекает границы доменов при нарушении политики кросс-доменных ограничений. Например, если ваш JS-код размещён на CDN-ресурсе, в сообщении о любой неперехваченной ошибке (то есть, об ошибке, которая не перехвачена в блоке try-catch
и дошла до обработчика window.onerror
) будет указано Script error
, а не полезная для целей устранения этой ошибки информация. Это — один из браузерных механизмов безопасности, направленный на предотвращение передачи данных между фрагментами кода, источниками которого являются разные домены, и которым в обычных условиях запрещено обмениваться информацией.
Вот последовательность действий, которая поможет увидеть эту ошибку.
1. Отправка заголовка Access-Control-Allow-Origin
.
Установка заголовка Access-Control-Allow-Origin
в состояние *
указывает на то, что к ресурсу можно получить доступ из любого домена.
Знак звёздочки можно, при необходимости, заменить на конкретный домен, например так: Access-Control-Allow-Origin: www.example.com
. Однако поддержка нескольких доменов — дело довольно сложное. Такая поддержка может не стоить затраченных на её обеспечение усилий, если вы используете CDN, из-за возможного возникновения проблем с кэшированием. Подробности об этом можно посмотреть здесь.
Вот примеры установки этого заголовка в различных окружениях.
Apache
В папке, из которой будут загружаться ваши JavaScript-файлы, создайте файл .htaccess
со следующим содержимым:
Header add Access-Control-Allow-Origin "*"
Nginx
Добавьте директиву add_header
к блоку location
, который отвечает за обслуживание ваших JS-файлов:
location ~ ^/assets/ {
add_header Access-Control-Allow-Origin *;
}
HAProxy
Добавьте следующую настройку к параметрам системы, ответственной за поддержку JS-файлов:
rspadd Access-Control-Allow-Origin: *
2. Установите crossorigin="anonymous"
в теге <script>
.
В вашем HTML-файле для каждого из скриптов, для которого установлен заголовок Access-Control-Allow-Origin
, установите crossorigin="anonymous"
в теге <script>
. Перед добавлением свойства crossorigin
к тегу <script>
проверьте отправку заголовка для файла скрипта. В Firefox, если атрибут crossorigin
присутствует, а заголовок Access-Control-Allow-Origin
— нет, скрипт выполнен не будет.
5. TypeError: Object doesn’t support property
Эта ошибка возникает в IE при попытке вызова неопределённого метода. Увидеть эту ошибку можно в консоли разработчика IE.
Ошибка Object doesn’t support property
Эта ошибка эквивалентна ошибке "TypeError: ‘undefined’ is not a function"
, которая возникает в Chrome. Обращаем ваше внимание на то, что речь идёт об одной и той же логической ошибке, о которой различные браузеры сообщают по-разному.
Это — обычная для IE проблема, возникающая в веб-приложениях, которые используют возможности пространств имён JavaScript. Когда возникает эта ошибка, то в 99.9% случаев её причиной является неспособность IE привязывать методы, расположенные в текущем пространстве имён, к ключевому слову this
. Например, предположим, что имеется объект Rollbar
с методом isAwesome
. Обычно, находясь в пределах этого объекта, метод isAwesome
можно вызвать так:
this.isAwesome();
Chrome, Firefox и Opera нормально воспримут такую команду. IE же её не поймёт. Таким образом, лучше всего, при использовании подобных конструкций, всегда предварять имя метода именем объекта (пространства имён), в котором он определён:
Rollbar.isAwesome();
6. TypeError: ‘undefined’ is not a function
Эта ошибка возникает в Chrome при попытке вызова неопределённой функции. Взглянуть на эту ошибку можно в консоли инструментов разработчика Chrome и в аналогичной консоли Firefox.
Ошибка TypeError: ‘undefined’ is not a function
Так как подходы к программированию на JavaScript и шаблоны проектирования постоянно усложняются, наблюдается и соответствующий рост числа ситуаций, в которых, внутри функций обратного вызова и замыканий, появляются области видимости, в которых используются ссылки на собственные методы и свойства с использованием ключевого слова this
, что является довольно распространённым источником путаницы и ошибок.
Рассмотрим следующий пример:
function testFunction() {
this.clearLocalStorage();
this.timer = setTimeout(function() {
this.clearBoard(); // что такое "this"?
}, 0);
};
Выполнение вышеприведённого кода приведёт к следующей ошибке: "Uncaught TypeError: undefined is not a function."
Причина появления этой ошибки заключается в том, что при вызове setTimeout()
мы, на самом деле, вызываем window.setTimeout()
. Как результат, анонимная функция, которая передаётся setTimeout()
, оказывается определена в контексте объекта window
, у которого нет метода clearBoard()
.
Традиционный подход к решению этой проблемы, совместимый со старыми версиями браузеров, заключается в том, чтобы просто сохранить ссылку на this
в некоей переменной, к которой потом можно будет обратиться из замыкания. Например, это может выглядеть так:
function testFunction () {
this.clearLocalStorage();
var self = this; // сохраним ссылку на 'this' пока оно является тем, чем мы его считаем!
this.timer = setTimeout(function(){
self.clearBoard();
}, 0);
};
В более современных браузерах можно использовать метод bind()
для передачи необходимой ссылки:
function testFunction () {
this.clearLocalStorage();
this.timer = setTimeout(this.reset.bind(this), 0); // осуществляем привязку к 'this'
};
function testFunction(){
this.clearBoard(); //возвращаемся к контексту правильного 'this'!
};
7. Uncaught RangeError: Maximum call stack
У возникновения этой ошибки, например, в Chrome, есть несколько причин. Одна из них — бесконечный вызов рекурсивной функции. Вот как выглядит эта ошибка в консоли разработчика Chrome:
Ошибка Maximum call stack size exceeded
Подобное может произойти и в том случае, когда функции передают значение, находящееся за пределами некоего допустимого диапазона значений. Многие функции принимают лишь числа, находящиеся в определённом диапазоне. Например, функции Number.toExponential(digits)
и Number.toFixed(digits)
принимают аргумент digits
, представленный числом от 0 до 20, а функция Number.toPrecision(digits)
принимает числа от 1 до 21. Взглянем на ситуации, в которых вызов этих и некоторых других функций приводит к ошибкам:
var a = new Array(4294967295); //OK
var b = new Array(-1); // ошибка!
var num = 2.555555;
document.writeln(num.toExponential(4)); //OK
document.writeln(num.toExponential(-2)); //ошибка!
num = 2.9999;
document.writeln(num.toFixed(2)); //OK
document.writeln(num.toFixed(25)); // ошибка!
num = 2.3456;
document.writeln(num.toPrecision(1)); //OK
document.writeln(num.toPrecision(22)); // ошибка!
8. TypeError: Cannot read property ‘length’
Эта ошибка возникает в Chrome при попытке прочесть свойство length
переменной, в которую записано undefined
. Взглянем на эту ошибку в консоли инструментов разработчика Chrome.
Ошибка Cannot read property ‘length’
Обычно, обращаясь к свойству length
, узнают длину массивов, но вышеописанная ошибка может возникнуть если массив не инициализирован, или если имя переменной скрыто в области видимости, недоступной из того места, где к этой переменной пытаются обратиться. Для того чтобы лучше понять сущность этой ошибки, рассмотрим следующий пример:
var testArray= ["Test"];
function testFunction(testArray) {
for (var i = 0; i < testArray.length; i++) {
console.log(testArray[i]);
}
}
testFunction();
При объявлении функции с параметрами эти параметры становятся для неё локальными переменными. В нашем примере это означает, что даже если в области видимости, окружающей функцию, есть переменная testArray
, параметр с таким же именем скроет эту переменную и будет восприниматься как локальная переменная функции.
Для того чтобы решить эту проблему, в нашем случае можно пойти одним из следующих двух путей:
- Удаление параметра, заданного при объявлении функции (как видно из примера, мы хотим работать с помощью функции с массивом, который объявлен за её пределами, поэтому тут можно обойтись и без параметра функции):
var testArray = ["Test"]; /* Предварительное условие: определение testArray за пределами функции */ function testFunction(/* без параметров */) { for (var i = 0; i < testArray.length; i++) { console.log(testArray[i]); } } testFunction();
- Вызов функции с передачей ей ранее объявленного массива:
var testArray = ["Test"]; function testFunction(testArray) { for (var i = 0; i < testArray.length; i++) { console.log(testArray[i]); } } testFunction(testArray);
9. Uncaught TypeError: Cannot set property
Когда мы пытаемся получить доступ к неопределённой переменной, то мы, фактически, работаем со значением типа undefined
, а этот тип не поддерживает чтение или запись свойств. В подобном случае приложение выдаст следующую ошибку:
"Uncaught TypeError cannot set property of undefined."
Взглянем на неё в браузере Chrome.
Ошибка Cannot set property
Если объект test
не существует, будет выдана ошибка "Uncaught TypeError cannot set property of undefined."
10. ReferenceError: event is not defined
Эта ошибка возникает при попытке получить доступ к неопределённой переменной, или к переменной, которая находится за пределами текущей области видимости. Взглянем на неё в консоли Chrome:
Ошибка ReferenceError: foo is not defined
Если вы сталкиваетесь с этой ошибкой при использовании системы обработки событий, убедитесь, что вы работаете с объектом события, переданным в качестве параметра. Более старые браузеры, вроде IE, предлагают глобальный доступ к событиям, но это не характерно для всех браузеров. Эту ситуацию пытаются исправить библиотеки вроде jQuery. В любом случае рекомендуется использовать именно тот объект события, которые передан в функцию обработки событий.
function myFunction(event) {
event = event.which || event.keyCode;
if(event.keyCode===13){
alert(event.keyCode);
}
}
Итоги
Надеемся, вы узнали из нашего рассказа об ошибках что-нибудь новое, такое, что поможет вам избежать ошибок в будущем, а может быть — уже помогло найти ответ на вопрос, который давно не давал вам покоя.
Уважаемые читатели! С какими JS-ошибками вы сталкивались в продакшне?
Почему не работает Wink на телевизоре
Приложение Wink стало конечным продуктом, образовавшимся из сервиса цифрового ТВ. Портал можно использовать только на территории России. Поскольку он еще довольно молодой и имеет много сырых технических наработок, у пользователей иногда возникают сбои, препятствуя просмотру. Рассмотрим, почему не работает Wink на телевизоре, и как реанимировать портал от Ростелекома своими силами. Все методы довольно простые и не требуют особых технических навыков.
Почему не работает Wink
Мультимедийный киносервис Винк установлен у многих пользователей девайсов и продолжает набирать популярность. В его арсенале разнообразный видеоконтент, который способен удовлетворить зрителей с разными вкусовыми предпочтениями. Это фильмы, сериалы, телепрограммы, мультфильмы. Но не всегда он работает безотказно. Портал был запущен сравнительно недавно, поэтому некоторые опции еще требуют доработки.
Разработчики регулярно модернизируют функционал мультимедийной платформы. Надеемся, в скором времени ошибки приложения отойдут в прошлое. Основными проблемами кинопортала пользователи называют недоступность некоторых опций, медленную, со сбоями загрузку или полный отказ в работе.
Wink не работает на Samsung Smart TV
У владельцев телевизоров Самсунг, подключивших платформу Винк, нередко возникает сбой. Установлено приложение было верно, регистрация прошла удачно, даже промокод получен. Но почему-то не работает Wink на телевизоре Samsung: вылетает, подвисает или остается затемненным экран. Здесь возможны два пути: перезагрузить девайс либо переустановить приложение. Начните с простых действий – перезагрузите гаджет.
Перезагрузите телевизор
Этот процесс потребует всего несколько минут. Надо просто выключить ТВ и вытащить вилку из розетки. Затем подождать около 5 минут и опять включить сначала телевизор, а потом приложение. В большинстве случаев этого хватает, можно сразу выбирать и просматривать фильм. Если предпринятые шаги результата не принесли, попробуйте использовать метод переустановки приложения.
Переустановите Wink
Если проблема отсутствия показа на гаджете в том, что устройство не работает в режиме приложения, попробуйте его заново. Этот метод применяется для марки Самсунг со Смарт ТВ позже 2015 года до 2018 года включительно серии: J, K, M, N, Q, LS. Определить модель и год легко. Это делается двумя методами:
- Посмотреть на этикетку, наклеенную заводом-производителем на обратную сторону корпуса девайса.
- Поискать информацию в меню на телевизоре, заглянув в память устройства. Выберите для этого в меню строчку «Поддержка», далее «Обращение в Samsung».
Wink: переустановка сервиса
- Откройте на панели приложений Smart сервис «APPS», задействовав на пульте кнопку в центре.
- Выберите из списка приложений нерабочий сервис.
- Наведите на него курсор и зажмите кнопку в центре пока не высветится добавочное меню.
- Такую процедуру можно проделать и с помощью кнопки «Tools» и пункта «Повторная установка».
Если все получилось, и приложение заработало, наслаждаемся работой сервиса, включаем телевидение и начинаем смотреть сериал или кино. Если данные действия не помогли, и Винк на телевизоре почему-либо не работает, предпринимаем следующие шаги по устранению проблемы.
Wink: блокировка IP
Случается, что приложение не работает по причине блокировки IP-адреса. Провайдер его блокирует, поэтому нет связи с сервером. Попробуйте поменять точку доступа беспроводной сети и подключить к ней телевизор. Новый интерактивный канал устранит блокировку. Если это не помогает, значит проблема у самого провайдера интернета или в DNS-сервере. Чтобы исправить неполадки со стороны провайдера, свяжитесь с ним по телефону, указанному в договоре на услуги. Если с этой стороны все гладко, значит надо проверить DNS-сервер.
Wink: смена адреса DNS-сервера
Когда смена IP-адреса не принесла положительного результата, можно попробовать сменить DNS-сервер. Возможно, проблема кроется именно там, потому и не работает Wink. Внесите изменения следующим образом:
- Зайдите в меню с настройками ТВ.
- Нажмите на строку «Общие».
- Далее выберите пункт «Состояние сети».
- Удостоверьтесь в активности интернет-соединения.
- Жмите на кнопку «Настройки DNS».
- Там нужно выбрать ручную настройку.
- Вписываем 8.8.8.8. или 208.67.222.222. в строку «Сервер DNS».
- Нажимаем кнопку «Готово» и возвращаемся обратно.
- Обязательно сохраните внесенные изменения.
- Убедитесь в наличие интернета на TV и перезагрузите телевизор.
Таким образом, устраняются неполадки с сервером-DNS. Если действия не оказали должного эффекта, и приложение по-прежнему не работает, попробуйте сброс настроек Smart Hub. Возможно, дело в этом.
Wink: сброс Smart Hub
Сбрасывая настройки Smart Hub, вы удалите приложение и ошибки, возникшие при его работе, тоже. В результате происходит возврат к заводским настройкам. Убедитесь, что гаджет сертифицирован для России, иначе после сброса настроек может возникнуть блокировка. Информация о сертификации находится на этикетке. Если серия оканчивается буквами XRU и содержит знак EAC, значит девайс ее прошел. Можно спокойно сбрасывать настройки. Алгоритм действий такой:
- Зайдите в меню «Настройки» и нажмите на кнопку «Поддержка».
- Выбираем строку «Самодиагностика», затем «сброс Smart Hub».
- Автоматически пин-код выставляется в виде 0000, нужно ввести туда параметры ТВ.
- Подождите окончания сбросовой операции и вернитесь в меню.
- В строке «APPS» появится окно. Надо установить изначальные параметры и дать согласие на условия пользования.
- Войдите в учетную запись девайса.
- Найдите Wink, установите программу, запустите.
Wink: сброс телевизора
Это самая крайняя мера после всех испробованных. Уже не важно, почему Wink виснет или вовсе не работает, сброс настроек телевизора вернет его к изначальным параметрам, введенным на заводе-изготовителе. При этом устранятся все ошибки, какие появились в программе позже. Основных ошибок может быть несколько. Рассмотрим их подробно.
Ошибка при воспроизведении
Нередко возникает ошибка, когда приложение удалось скачать и установить без помех, но при воспроизведении оно начинает тормозить, возникают помехи, остановки в работе. Программа автоматически ищет проблемные алгоритмы и сообщает о них в виде цифрового или буквенного кода. На экране появляются результаты диагностики, то есть знаки и номера существующих ошибок. По ним можно легко определить причину неисправности и быстро устранить ее самостоятельно.
Ошибка при инициализации приложения
Иногда Винк не работает, потому что возникает ошибка инициализации. При появлении надписи об этой ошибке понадобится прописать DNS, перейдя в настройки. Делается это в следующем порядке.
- Из меню перейдите к строке «Сеть» или «Состояние сети».
- Затем нажимайте на строчку «Настройки IP».
- Следующим действием выбирайте «Настройки DNS» и ручной ввод.
- Появится поле с нулями. В него вместо нулей нужно внести цифры: 8.8.8.8.
- После этого указать «Готово».
- Завершите операцию, активизировав кнопку «Ок».
Устранив эту ошибку, нужно выключить телевизор пультом или кнопкой. Потом отключить его из сети и подождать не менее 10 секунд. Затем подключите гаджет к электросети, включите его и перейдите в сервис Винк. Ошибка должна устраниться и приложение заработать корректно, без зависаний. Можно просматривать контент без помех.
Код ошибки 6000000 Wink
Номер ошибки 6000000 возникает при отсутствии интернет-соединения. Посмотрите, правильно ли подключен кабель. Возможно, проблемы с роутером. Проверить его рабочее состояние можно, включив компьютер или приставку.
Зачем предпринимать сбросы и перезагрузки, если причина кроется еще на подходе, и есть возможность ее устранить простыми методами? Если хотя бы один гаджет будет показывать наличие интернет-соединения, значит роутер исправен. Тут сможет помочь перезагрузка роутера. Выключите его на несколько секунд, затем снова включите.
Ошибка в заполнении формы
Появление ошибки Ростелекома провоцирует неверное заполнение формы. Не стоит выискивать неправильно введенные данные. Проще сделать перезагруз и подключить приложение снова.
Что делать, если не работает Wink на компьютере
Стоит остановиться еще на одной проблеме и объяснить, почему Wink не показывает на стационарном компьютере или на ноутбуке от домашней или общественной сети Wi-Fi. Запустить в работу сервис с этих гаджетов можно из строки браузера, прописав название официального сайта Wink.rt.ru.
Если портал не функционирует или воспроизводится с ошибками, причины две: неисправные девайсы и нарушение в интернет-коммуникациях. Для устранения огрехов перезагружайте компьютер и проверяйте наличие интернета.
Сервис Винк, созданный компанией Ростелеком, – мультимедийный видеопортал с возможностью подключения 5 различных девайсов: ПК, смартфона, приставки, планшета, ноутбука. При этом можно подключать разное количество одинаковых гаджетов, например, 5 смартфонов или 5 телевизоров.
Если вы впервые подключаете приложение на телевизор, действуйте по инструкции, внимательно следите за правильностью вводимой информации. Винк позволит просматривать видео в высоком качестве изображения и звука, если подключен правильно. Регистрируя свой телевизор в списке устройств, можно сразу подключить платную подписку, тогда вам предложат только необходимый перечень услуг и расширенные возможности просмотра.
Допустим, вы делаете страницу с формой и полем ввода:
<form name="myform">
<input name="myinput" value="10" />
</form>
Нужно, чтобы скрипт нашёл эту форму, достал из неё значение поля ввода и вывел его на экран. Вы пишете скрипт и оформляете его как отдельный файл, который подключаете в разделе head:
<script>
var str = '';
for(i=0; i < document.myform.elements.length; i++){
str += document.myform.elements[i].name +
'=' + encodeURIComponent(document.myform.elements[i].value) +
(i == document.myform.elements.length -1 ? '' : '&');
}
alert(str);
</script>
Этот скрипт должен быть правильным. При тестировании внутри консоли он делает именно то, что нужно. Но после запуска скрипт падает с ошибкой:
❌ Uncaught TypeError: Cannot read property
Это означает: «Вы пытаетесь прочитать у объекта какое-то свойство, но я не могу его найти, а значит, не могу и прочитать то, чего нет».
Странно, ведь вы уверены, что у этого объекта такое свойство точно есть, и вы сто раз так уже делали.
Всё так и одновременно не так.
Что делать с ошибкой Uncaught TypeError: Cannot read property
Эта ошибка чаще всего происходит, когда вы обращаетесь к свойствам объекта раньше, чем объект готов:
- Скорее всего, объект ещё не загрузился.
- Может быть, этот объект должен появиться на странице по скрипту, который ещё не выполнился.
- Допущена опечатка в названии объекта, поэтому при обращении к нему скрипт его не находит.
Наш случай — первый и самый распространённый: мы вызываем скрипт в разделе <head>, но форма у нас ещё не готова — она банально не загружена в документ, поэтому скрипт не может прочитать свойства несуществующей формы.
Чтобы избавиться от этой ошибки, нужно добавить в вызов скрипта атрибут defer
— он заставит скрипт подождать, пока страница загрузится полностью, вместе с формой.
<script defer src="...">
Второй вариант — поместить вызов скрипта сразу после формы, тогда к моменту вызова всё окажется на своих местах и ошибки не будет. Или вообще в конце всего документа.
From a short tutorial I started this widget script to grab posts on Blogger. In the theme I originally made it in, it works fine without error. However, when I try to use the exact same code in a new template I’m working on, it throws the error:
Uncaught TypeError: Cannot read property ‘url’ of undefined
For the love of god I cannot figure out why it’s doing that. For debugging purposes I tried removing all other scripts, placing the code right after the <body>
tag and just before the </body>
tag.
I really don’t know anything about scripting and did this widget as a starting point in learning, but it’s been months since I messed with it. Looking at it now I just don’t see the problem. Here is the script:
<script type="text/javascript">
//<![CDATA[
function postGrabber(json) {
// The Magic
for (var i = 0; i < json.feed.entry.length; i++) {
for (var j = 0; j < json.feed.entry[i].link.length; j++) {
if (json.feed.entry[i].link[j].rel == 'alternate') {
var postUrl = json.feed.entry[i].link[j].href;
break;
}
}
// Thumbnail Stuff
var orgImgUrl = json.feed.entry[i].media$thumbnail.url ? json.feed.entry[i].media$thumbnail.url : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg';
var newImgUrl = orgImgUrl.replace('s72-c', 's' + imgSize + '-c');
var imgTag = '<a class="item-link-post" href="' + postUrl + '"><img class="item-img-thumbnail" src="' + newImgUrl + '" width="' + imgSize + '" height="' + imgSize + '"/></a>';
var authorName = json.feed.entry[i].author[0].name.$t;
var authorURL = json.feed.entry[i].author[0].uri.$t;
var authorOriImgUrl = json.feed.entry[i].author[0].gd$image.src;
var authorNewImgUrl = authorOriImgUrl.replace('s512-c', 's' + authorImgSize + '-c');
var authorImgTag = '<a class="item-link-author" href="' + authorURL + '" target="_blank" rel="nofollow"><img class="item-img-author" src="' + authorNewImgUrl + '" alt="' + authorName + '"/></a>';
// Standard Stuff
var postTitle = json.feed.entry[i].title.$t;
var postCommentCount = json.feed.entry[i].thr$total.$t;
var postSummary = json.feed.entry[i].summary.$t;
var entryShort = postSummary.substring(0, '' + summaryLength + '');
var entryEnd = entryShort.lastIndexOf(" ");
var postContent = entryShort.substring(0, entryEnd) + '...';
var postDate = json.feed.entry[i].updated.$t ? json.feed.entry[i].updated.$t : json.feed.entry[i].published.$t;
var shortDate = postDate.substring(0,10);
// Let's Make Options Here
var toggleImg = showImg ? '' + imgTag + '' : '';
var toggleTitle = showTitle ? '<h1 class="item-title">' + postTitle + '</h1>' : '';
var toggleSummary = showSummary ? '<p class="item-snippet">' + postContent + '</p>' : '';
var toggleDate = showDate ? '<span class="item-date">' + shortDate + '</span>' : '';
var toggleAuthorImg = showAuthorImg ? '' + authorImgTag + '' : '';
var toggleCommentCount = showCommentCount ? '<span class="item-comment-count">' + postCommentCount + '</span>' : '';
// The Output
var itemPost = '<div class="item-post"><div class="item-imgs">' + toggleImg + toggleAuthorImg + '</div>' + toggleCommentCount + '<a class="item-link" href=' + postUrl + '>' + toggleTitle + '</a>' + toggleSummary + toggleDate + '</div>';
// Let's Write It Down
document.write(itemPost);
}
}
//]]>
</script>
<script type="text/javascript">
// The Default Options
var imgSize = 96;
var summaryLength = 142;
var authorImgSize = 36;
var showImg = true;
var showTitle = true;
var showSummary = true;
var showDate = true;
var showAuthorImg = true;
var showCommentCount = true;
</script>
<script src="/feeds/posts/summary?orderby=published&max-results=5&alt=json-in-script&callback=postGrabber"></script>
Hi
Having some issues with autoUpdate.
It find’s the update but before it’s going to download the update it gives me a error
TypeError: Cannot read property ‘url’ of undefined
cant find out why it’s giving me this error
Version:
electron-updater = 2.16.1
electron = 1.7.9
electron-builder = 19.46.9
package.json
{
"name": "Wired",
"version": "0.1.0",
"description": "Home assistant",
"repository": {
"type": "git",
"url": "https://github.com/andrewo0/wired.git"
},
"scripts": {
"postinstall": "install-app-deps"
},
"dependencies": {
"electron-updater": "^2.16.1",
"electron-log": "^1.3.0"
},
"devDependencies": {
"electron-builder": "19.46.9",
"electron-updater": "^2.16.1",
"electron": "1.7.9",
"gulp": "^3.9.1",
"mocha": "^4.0.1",
"spectron": "^3.7.2",
"webpack-stream": "^3.2.0"
},
"build": {
"appId": "com.electron.wired",
"publish": [
{
"provider": "github",
"owner": "andrewo0",
"private": true
}
],
"win": {
"target": "nsis"
},
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true
},
"mac": {
"category": "your.app.category.type"
}
}
}
index.js
const {app, BrowserWindow, Menu, protocol, ipcMain} = require('electron');
const log = require('electron-log');
const {autoUpdater} = require("electron-updater");
let window;
let path;
let json;
path = require('path');
json = require('settings.json');
autoUpdater.logger = log;
autoUpdater.logger.transports.file.level = 'info';
log.info('App starting...');
function sendStatusToWindow(text) {
log.info(text);
window.webContents.send('message', text);
}
function mainWindow(){
window = new BrowserWindow({
title: json.name,
width: json.settings.width,
height: json.settings.height,
frame: json.settings.frame,
titleBarStyle: json.settings.titlebarstyle,
backgroundColor: '#000000',
show: false
});
window.loadURL('file://' + path.join(__dirname, '..', '..') + '/index.html#v' + app.getVersion());
window.once('ready-to-show', () => {
window.show()
})
window.on('closed', function () {
window = null;
});
return window;
}
app.on('ready', function() {
autoUpdater.checkForUpdates();
});
autoUpdater.on('checking-for-update', () => {
sendStatusToWindow('Checking for update...');
})
autoUpdater.on('update-available', (info) => {
sendStatusToWindow('Update available.');
})
autoUpdater.on('update-not-available', (info) => {
sendStatusToWindow('Update not available.');
})
autoUpdater.on('error', (err) => {
sendStatusToWindow('Error in auto-updater. ' + err);
})
autoUpdater.on('download-progress', (progressObj) => {
let log_message = "Download speed: " + progressObj.bytesPerSecond;
log_message = log_message + ' - Downloaded ' + progressObj.percent + '%';
log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')';
sendStatusToWindow(log_message);
})
autoUpdater.on('update-downloaded', (info) => {
sendStatusToWindow('Update downloaded');
});
app.on('ready', function () {
mainWindow();
});
app.on('window-all-closed', () => {
app.quit();
});
Log:
[2017-11-30 09:38:00:0536] [info] App starting...
[2017-11-30 09:38:00:0607] [info] Checking for update
[2017-11-30 09:38:00:0607] [info] Checking for update...
[2017-11-30 09:38:01:0926] [info] Generated new staging user ID:
[2017-11-30 09:38:03:0907] [info] Found version 0.1.1 (url: Wired-Setup-0.1.1.exe)
[2017-11-30 09:38:03:0907] [info] Update available.
[2017-11-30 09:38:03:0908] [info] Downloading update from Wired-Setup-0.1.1.exe
[2017-11-30 09:38:03:0912] [error] Error: TypeError: Cannot read property 'url' of undefined
at updateInfo.files.map.it (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcPrivateGitHubProvider.ts:101:63)
at Array.map (native)
at PrivateGitHubProvider.resolveFiles (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcPrivateGitHubProvider.ts:98:29)
at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcNsisUpdater.ts:19:53
From previous event:
at NsisUpdater.doDownloadUpdate (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutNsisUpdater.js:133:11)
at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:304:25
at Generator.next (<anonymous>)
From previous event:
at NsisUpdater.downloadUpdate (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutAppUpdater.js:355:11)
at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:280:49
From previous event:
at NsisUpdater.doCheckForUpdates (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutAppUpdater.js:326:11)
at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:228:25
at Generator.next (<anonymous>)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
at NsisUpdater._checkForUpdates (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutAppUpdater.js:280:11)
at NsisUpdater.checkForUpdates (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:177:35)
at App.<anonymous> (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarjavascriptsmainindex.js:45:15)
at emitTwo (events.js:111:20)
at App.emit (events.js:194:7)
[2017-11-30 09:38:03:0912] [info] Error in auto-updater. TypeError: Cannot read property 'url' of undefined
При отладке своего кода (обычно на JavaScript) программист может столкнуться с системным сообщением об ошибке «TypeError: Cannot read property ‘xxx’ of undefined». Вместо значения ХХХ указана какая-либо объявленная переменная или свойство объекта, значение которых по различным причинам не задано разработчиком. Ниже разберём, каков перевод данного сообщения, и каково может быть решение возникшей проблемы.
Содержание
- Почему возникает ошибка
- Присвойте начальное значение переменной
- Улучшите связность вашего кода
- Проверьте наличие свойства
- Деструктурируйте доступ к свойствам нужного объекта
- Заключение
Почему возникает ошибка
В переводе данное сообщение выглядит как «Ошибка типа: Не удаётся прочитать неопределённое свойство ХХХ». Поскольку в некоторых языках программирования (в частности, «JavaScript») есть возможность получения доступа к неинициализированным значениям, то это может вызывать появление рассматриваемой мной ошибки.
Что до причин ошибки undefined, то она обычно возникает при отладке какого-либо программного кода, и может быть вызвана следующими факторами:
- Использующиеся в программном коде переменная не была инициализирована (переменной не присвоено значение);
- Была осуществлена попытка доступа к отсутствующему свойству объекта;
- Была попытка получить доступ к отсутствующему элементу массива.
Давайте разберёмся, как исправить данную ошибку при написании вашего кода.
Читайте также: Failed to execute ‘replaceChild’ on ‘Node’ на JavaScript – как исправить.
Присвойте начальное значение переменной
Наиболее очевидным способом исправить ошибку «TypeError: Cannot read property ‘xxx’ of undefined» является присвоение переменной начального значения. Чем меньше такая переменная пребывает в неинициализированном состоянии – тем будет лучше. В идеале лучше сразу же присвоить значение «Variable» = «начальное значение» (‘initial’), хотя далеко не всегда специфика вашего кода может предполагать указанный вариант.
Улучшите связность вашего кода
Термин «связность» в нашем контексте характеризует уровень взаимосвязанности элементов разрабатываемого вами модуля (пространства имён, метода, класса, блока кода). Как известно, существуют два типа связности, а именно сильная и слабая связность. Использование сильной связности предполагает фокусировку элементов модуля лишь на одной задаче. Потому для извлечения выгоды из сильной связности, необходимо держать используемые переменные поближе к блоку кода, в работе которого они используются.
К примеру, вместо блока кода:
будет оптимальнее переместить переменные поближе к месту их применения:
Улучшение связности позволит избежать появление ошибки «Cannot read property ‘xxx’ of undefined» при отладке вашего кода.
Проверьте наличие свойства
В языке Javascript имеются ряд инструментов, позволяющих определить, имеет ли необходимый нам объект какое-либо свойство:
В частности, это:
- typeof obj.prop !== ‘undefined’ — данный инструмент позволяет проверить тип значения свойства;
- obj.prop !== undefined — этот инструмент позволяет сравнить объект непосредственно с undefined;
- ‘prop’ in obj позволяет проверить объект на наличие его собственного или полученного свойства;
- И obj.hasOwnProperty(‘prop’) позволяет проверить объект на наличие его собственного свойства.
В этом и схожих случаях рекомендуется использовать оператор in, который обладает простым и удобным синтаксисом. Наличие оператора in демонстрирует желание проверить, имеет ли объект нужное свойство без обращения к фактическому значению данного свойства.
Деструктурируйте доступ к свойствам нужного объекта
Деструктурирование нужного объекта позволяет непосредственно извлекать значения свойства объекта в переменные или, если такое свойство не существует, устанавливать значение по дефаулту. Такой вариант позволяет исключить прямой контакт с undefined.
Извлечение свойств теперь выглядит примерно так:
Деструктурирование хорошо, когда можно указать значение по умолчанию, и это значение будет возвращено при попытке доступа к отсутствующему свойству. В конечном счёте, благодаря деструктурированию вы сможете избежать появления undefined и всех сопутствующих проблем.
Это интересно: что означает «JavaScript error: Mutations are not initialized.
Заключение
В нашей статье мы разобрали, почему появляется ошибка «TypeError: Cannot read property ‘xxx’ of undefined», как она переводится и как от неё можно избавиться. Во избежание возникновения данной ошибки присвойте начальное значение соответствующей переменной. Это позволит избежать появления рассмотренной выше дисфункции при отладке вашего кода.
Допустим, вы делаете страницу с формой и полем ввода:
<form name="myform">
<input name="myinput" value="10" />
</form>
Нужно, чтобы скрипт нашёл эту форму, достал из неё значение поля ввода и вывел его на экран. Вы пишете скрипт и оформляете его как отдельный файл, который подключаете в разделе head:
<script>
var str = '';
for(i=0; i < document.myform.elements.length; i++){
str += document.myform.elements[i].name +
'=' + encodeURIComponent(document.myform.elements[i].value) +
(i == document.myform.elements.length -1 ? '' : '&');
}
alert(str);
</script>
Этот скрипт должен быть правильным. При тестировании внутри консоли он делает именно то, что нужно. Но после запуска скрипт падает с ошибкой:
❌ Uncaught TypeError: Cannot read property
Это означает: «Вы пытаетесь прочитать у объекта какое-то свойство, но я не могу его найти, а значит, не могу и прочитать то, чего нет».
Странно, ведь вы уверены, что у этого объекта такое свойство точно есть, и вы сто раз так уже делали.
Всё так и одновременно не так.
Что делать с ошибкой Uncaught TypeError: Cannot read property
Эта ошибка чаще всего происходит, когда вы обращаетесь к свойствам объекта раньше, чем объект готов:
- Скорее всего, объект ещё не загрузился.
- Может быть, этот объект должен появиться на странице по скрипту, который ещё не выполнился.
- Допущена опечатка в названии объекта, поэтому при обращении к нему скрипт его не находит.
Наш случай — первый и самый распространённый: мы вызываем скрипт в разделе <head>, но форма у нас ещё не готова — она банально не загружена в документ, поэтому скрипт не может прочитать свойства несуществующей формы.
Чтобы избавиться от этой ошибки, нужно добавить в вызов скрипта атрибут defer
— он заставит скрипт подождать, пока страница загрузится полностью, вместе с формой.
<script defer src="...">
Второй вариант — поместить вызов скрипта сразу после формы, тогда к моменту вызова всё окажется на своих местах и ошибки не будет. Или вообще в конце всего документа.
Электронные подписи используются в течение последнего десятилетия всё чаще. Благодаря им, нет необходимости посещать локацию заключения сделки, чтобы подтвердить документы. Всё можно сделать дистанционно, находясь в любой точке мира — главное, чтобы были компьютер и интернет. Это улучшает комфортность и даёт новые возможности бизнесу, а также ЭЦП безопасны и надёжны, ведь подделать их невозможно.
Однако иногда бывает, что техника подводит, и появляются какие-либо сложности с использование электронно-цифровой подписи. И эти проблемы обычно негативно влияют на бизнес, задерживают его. В этой статье рассмотрим ошибку Cannot read properties of undefined (reading ‘CreateObjectAsync’), которая возникает при подтверждении документов на сайте Госзакупок. Узнаем, как решить эту проблему максимально быстро и самостоятельно, начав от простых действий.
Содержание
- Перезагрузка компьютера
- Переход на другой браузер
- Установка расширения CryptoPro Extension for CAdES Browser Plug-in
- Переустановка КриптоПро ЭЦП
- Обновление сертификатов в КриптоПро ЭЦП
- Отключение расширения браузера
- Отключение антивируса
- Обновление браузера
Перезагрузка компьютера
Перезагрузка — панацея от многих компьютерных проблем. Это самое быстрое, что можно сделать, если что-то работает не так, как надо и в большинстве случаев это простое действие действительно помогает. Поэтому начните с перезагрузки вашего компьютера.
Во время этого перезагрузится не только компьютер, но также и браузер, в котором вы пользовались Госзакупками, и программа КриптоПро ЭЦП, что тоже может помочь решить проблему. После успешной загрузки компьютера попробуйте снова совершить действие, при котором появилась ошибка Cannot read properties of undefined (reading ‘CreateObjectAsync’).
Переход на другой браузер
Некоторые пользователи советуют использовать браузер Спутник или Internet Explorer. Первый вариант рекомендуется больше. Скачивать и устанавливать необходимо не просто браузер Спутник, а ту версию, которая поддерживает криптографию https://www.sputnik-lab.com/news/suspend.
Internet Explorer тоже некоторым помог решить эту ошибку. Но этот вариант немного хуже, чем Спутник, потому что данный браузер больше не поддерживается разработчиком и в последних версиях Windows его нет. Однако по мнению многих, он лучше всех работает с сайтами, подобным Госзакупкам.
Установка расширения CryptoPro Extension for CAdES Browser Plug-in
При появлении ошибки Cannot read properties of undefined (reading ‘CreateObjectAsync’) некоторым помогло расширение CryptoPro Extension for CAdES Browser Plug-in. Это расширение для браузера Google Chrome и оно будет работать только в нём. Установите его, а потом попробуйте снова подтвердить документ на Госзакупках.
Переустановка КриптоПро ЭЦП
КриптоПро ЭЦП — это программа, которая устанавливается на компьютер. Она обеспечивает связь между сайтом, где происходит подтверждение документов, и электронными сертификатами подписей, которые хранятся на компьютере. Естественно, что если в этой программе сбой, то подтвердить документы не получится и появится ошибка.
Поэтому, если описанные способы не помогают, то рекомендуется переустановить КриптоПро ЭЦП. Для этого её надо сначала удалить с компьютера, а потом скачать с сайта разработчика и установить заново https://www.cryptopro.ru/products/cades/plugin. Если вы затрудняетесь удалить программу, то попробуйте просто установить её заново, тогда программа заменит все свои файлы на компьютере и это с большой вероятностью тоже поможет решить проблему с ошибкой.
Обновление сертификатов в КриптоПро ЭЦП
КриптоПро ЭЦП знает о сертификатах ровно столько, сколько ей укажет пользователь компьютера. Программа запоминает указанные пути хранения сертификатов. Если сертификаты на компьютере были переносы в другое месте или если произошёл какой то сбой от которого КриптоПро ЭЦП потеряла пути их хранения, то нужно указать их заново.
Для этого откройте приложение КриптоПро ЭЦП и перейдите в раздел “Сервис”. Нажмите на кнопку “Обзор” и заново укажите путь на файл сертификата”.
Отключение расширения браузера
Расширения браузера, даже полезные, могут мешать работать КриптоПро ЭЦП. Поэтому рекомендуется их временно отключить и попробовать подтвердить документ на Госзакупках заново.
Даже если вы не устанавливали в браузер новые расширения, всё равно следует их отключить. Потому что некоторые расширения обновляются и меняют свой алгоритм работы, а также часто бывает, что пользователь случайно и не замечая того, сам устанавливает расширения в свой браузер.
Отключение антивируса
Многие пользователи знают, что антивирусы часто срабатывают ложно. И даже совершенно безобидные файлы помечают как вредоносные. Это приводит к нарушению работы некоторых программ, и с КриптоПро ЭЦП это тоже может быть.
Поэтому на время пользования КриптоПро ЭЦП, если появляется ошибка, рекомендуется отключать антивирус. Также рекомендуется переустановить КриптоПро ЭЦП именно с отключенным антивирусом.
Вам будет это интересно: Чем опасна электронная подпись для физических лиц?
Обновление браузера
Современные браузеры часто обновляются. Это делается не только для того, чтобы улучшить его функциональность и добавить новые возможности, но и для защиты. Потому что новые способы взломов и атак появляются тоже часто. Когда дело касается ЭЦП, безопасность на первом месте. Поэтому программа КриптоПро ЭЦП может не работать с устаревшей версией браузера. Обновление браузера в этом случае решает проблему.
Кстати, на компьютерах с устаревшей версий Windows XP обновить браузер не получится, потому что разработчики перестали поддерживать эту операционную систему. Однако, несмотря на это, ею всё ещё некоторые пользуются. В этом случае нужно использовать более современный компьютер, чтобы установить на него актуальную версию браузера.
Если при подписании на сайте ЕИС (ЕРУЗ) https://zakupki.gov.ru/ возникает ошибка «Cannot read properties of undefined (reading ‘CreateObjectAsync’)», мы рекомендуем в первую очередь использовать браузер Chromium GOST, так как ЕИС корректно работает именно в нём. Если вы планируете работать в Яндекс.Браузере — необходимо выполнить дополнительные настройки.
Если вы хотите использовать другой браузер, в котором возникает эта ошибка — рекомендуем обратиться в техническую поддержку ЕИС для уточнения сроков исправления ошибки в нужном для вас браузере.
Настройте для работы браузер Chromium GOST
1. Установите браузер:
- Автоматически с нашего Веб-диска. После установки переходите к пункту 2 инструкции.
- Вручную по ссылке https://github.com/deemru/Chromium-Gost/releases/. На открывшейся странице выберите версию браузера, которая соответствует разрядности вашей операционной системы, разрядность вашей системы можно определить следующими способами:
а) Нажать правой кнопкой мыши на Мой компьютер — Свойства.
б) Нажать комбинацию клавиш Win+Pause.
в) Нажать правой кнопкой мыши на Пуск — Система.
г) Воспользоваться инструкцией от Microsoft.
Запустите скачанный файл и следуйте подсказкам на экране для установки
2. Запустите браузер Chromium GOST и откройте в нём ссылку https://chrome.google.com/webstore/detail/cryptopro-extension-for-c/iifchhfnnmpdbibifmljnfjhpififfog. Проверьте, что расширение с открывшейся страницы установлено (должна отобразиться кнопка «Удалить из Chrome»):
Если вы видите кнопку «Установить» — нажмите её для установки расширения:
3. Повторите подписание документов в ЕИС
Настроить для работы Яндекс.Браузер
1. Скачайте браузер по ссылке https://browser.yandex.ru/ . Если Яндекс.Браузер уже установлен и ранее ЕИС (ЕРУЗ) работал в нём корректно, то переходите к пункту 4.
2. В Яндекс.Браузере зайдите в раздел «Настройки» — «Системные», либо откройте в нем ссылку: browser://settings/system
Включите настройку «Подключаться к сайтам, использующим шифрование по ГОСТ. Требуется КриптоПро»:
3. Установите расширение https://chrome.google.com/webstore/detail/cryptopro-extension-for-c/iifchhfnnmpdbibifmljnfjhpififfog так же, как это описано ранее в инструкции про Chromium GOST.
4. Повторите подписание в ЕИС. Если ошибка сохранилась, для нормальной работы портала в Яндекс.Браузере нужно выключить расширение из каталога Opera:
Откройте «Настройки» — «Дополнения», либо откройте в браузере ссылку browser://tune/
Отключите расширение Каталог КриптоПро ЭЦП переведя ползунок в левое положение:
Внимание! Изменение этой настройки может негативно повлиять работу на некоторых сайтах, например на www.sberbank-ast.ru, www.rts-tender.ru и https://etp.gpb.ru/ . Решение об отключении вы принимаете самостоятельно!
Перезапустите браузер и повторите подписание в ЕИС.
Getting this error when running server.js.
Started http server.
info - socket.io started
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Cannot read property 'url' of undefined
at Function.handle (/opt/lampp/htdocs/notifications/sites/all/modules/nodejs/node_modules/express/node_modules/connect/lib/proto.js:105:18)
at Server.app (/opt/lampp/htdocs/notifications/sites/all/modules/nodejs/node_modules/express/node_modules/connect/lib/connect.js:60:31)
at Server.serverListening (/opt/lampp/htdocs/notifications/sites/all/modules/nodejs/node_modules/socket.io/node_modules/policyfile/lib/server.js:136:16)
at Server.g (events.js:156:14)
at Server.emit (events.js:64:17)
at Array.0 (net.js:777:10)
at EventEmitter._tickCallback (node.js:192:40)
This is the output of npm install
require@0.4.9 ./node_modules/require
└── uglify-js@1.0.3
express@3.0.0alpha1 ./node_modules/express
├── mime@1.2.5
├── commander@0.5.2
├── mkdirp@0.3.1
├── debug@0.6.0
└── connect@2.1.2
socket.io@0.9.6 ./node_modules/socket.io
├── policyfile@0.0.4
├── redis@0.6.7
└── socket.io-client@0.9.6
And this is my config file:
backendSettings = {
"scheme":"http",
"host":"localhost",
"port":8080,
"resource":"/socket.io",
"publishUrl":"/notifications/nodejs/publish",
"serviceKey":"54468779wifjo78fjwijowef",
"backend":{
"port":80,
"host":"localhost",
"messagePath":"/nodejs/message"
},
"clientsCanWriteToChannels":false,
"clientsCanWriteToClients":false,
"extensions":"",
"debug":true,
"transports":["websocket",
"flashsocket",
"htmlfile",
"xhr-polling",
"jsonp-polling"],
"jsMinification":true,
"jsEtag":true,
"logLevel":1};
Thanks in advance
Welcome to the Treehouse Community
The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.
Posted August 30, 2017 4:34pm by Nick Trabue
I’m getting this error no matter what I try to change to fix it. As far as I can tell I’ve matched Guil’s code completely
import React from 'react'; import {Route, NavLink, Redirect } from 'react-router-dom'; //App Components import HTML from './courses/HTML'; import CSS from './courses/CSS'; import JavaScript from './courses/JavaScript'; const Courses = ({match}) => ( <div className="main-content courses"> <div className="course-header group"> <h2>Courses</h2> <ul className="course-nav"> <li><NavLink to={`${match.url}/html`}>HTML</NavLink></li> <li><NavLink to={`${match.url}/css`}>CSS</NavLink></li> <li><NavLink to={`${match.url}/javascript`}>JavaScript</NavLink></li> </ul> </div> {/* Write routes here... */} <Route exact path={match.path} render ={ () => <Redirect to={`${match.path}/html`} /> } /> <Route path={`${match.path}/html`} component={HTML} /> <Route path={`${match.path}/css`} component={CSS} /> <Route path={`${match.path}/javascript`} component={JavaScript} /> </div> ); export default Courses;
It shows that it compiles successfully and I can view all the routes until I get to courses.
×
TypeError: Cannot read property ‘url’ of undefined
Courses
src/components/Courses.js:14
11 | <div className=»course-header group»>
12 | <h2>Courses</h2>
13 | <ul className=»course-nav»>
14 | <li><NavLink to={`${match.url}/html`}>HTML</NavLink></li>
15 | <li><NavLink to={`${match.url}/css`}>CSS</NavLink></li>
16 | <li><NavLink to={`${match.url}/javascript`}>JavaScript</NavLink></li>
17 | </ul>
View compiled
▶ 34 stack frames were collapsed.
(anonymous function)
src/index.js:6
3 | import App from ‘./components/App’;
4 | import ‘./css/index.css’;
5 |
6 | ReactDOM.render(
7 | <App />,
8 | document.getElementById(‘root’)
9 | );
View compiled
▶ 6 stack frames were collapsed.
This screen is visible only in development. It will not appear if the app crashes in production.
Open your browser’s developer console to further inspect this error.
3 Answers
PLUS
The issue and the solution to this.
the problem occurs when I use
<Route path="/courses" render={()=><Courses />} />
instead of
<Route path="/courses" component={Courses} />
obviously these two behave differently. The first one does not receive the props.
PLUS
Having the same issue. have used couple of hours to find solution, and I seem to not get why it is happening.
Nick Trabue August 30, 2017 4:41pm
This went away after adding the «Switch» piece in the next lesson. Still not sure I understand how/why.
При отладке своего кода (обычно на JavaScript) программист может столкнуться с системным сообщением об ошибке «TypeError: Cannot read property ‘xxx’ of undefined». Вместо значения ХХХ указана какая-либо объявленная переменная или свойство объекта, значение которых по различным причинам не задано разработчиком. Ниже разберём, каков перевод данного сообщения, и каково может быть решение возникшей проблемы.
Содержание
- Почему возникает ошибка
- Присвойте начальное значение переменной
- Улучшите связность вашего кода
- Проверьте наличие свойства
- Деструктурируйте доступ к свойствам нужного объекта
- Заключение
Почему возникает ошибка
В переводе данное сообщение выглядит как «Ошибка типа: Не удаётся прочитать неопределённое свойство ХХХ». Поскольку в некоторых языках программирования (в частности, «JavaScript») есть возможность получения доступа к неинициализированным значениям, то это может вызывать появление рассматриваемой мной ошибки.
Что до причин ошибки undefined, то она обычно возникает при отладке какого-либо программного кода, и может быть вызвана следующими факторами:
- Использующиеся в программном коде переменная не была инициализирована (переменной не присвоено значение);
- Была осуществлена попытка доступа к отсутствующему свойству объекта;
- Была попытка получить доступ к отсутствующему элементу массива.
Давайте разберёмся, как исправить данную ошибку при написании вашего кода.
Читайте также: Failed to execute ‘replaceChild’ on ‘Node’ на JavaScript – как исправить.
Присвойте начальное значение переменной
Наиболее очевидным способом исправить ошибку «TypeError: Cannot read property ‘xxx’ of undefined» является присвоение переменной начального значения. Чем меньше такая переменная пребывает в неинициализированном состоянии – тем будет лучше. В идеале лучше сразу же присвоить значение «Variable» = «начальное значение» (‘initial’), хотя далеко не всегда специфика вашего кода может предполагать указанный вариант.
Улучшите связность вашего кода
Термин «связность» в нашем контексте характеризует уровень взаимосвязанности элементов разрабатываемого вами модуля (пространства имён, метода, класса, блока кода). Как известно, существуют два типа связности, а именно сильная и слабая связность. Использование сильной связности предполагает фокусировку элементов модуля лишь на одной задаче. Потому для извлечения выгоды из сильной связности, необходимо держать используемые переменные поближе к блоку кода, в работе которого они используются.
К примеру, вместо блока кода:
будет оптимальнее переместить переменные поближе к месту их применения:
Улучшение связности позволит избежать появление ошибки «Cannot read property ‘xxx’ of undefined» при отладке вашего кода.
Проверьте наличие свойства
В языке Javascript имеются ряд инструментов, позволяющих определить, имеет ли необходимый нам объект какое-либо свойство:
В частности, это:
- typeof obj.prop !== ‘undefined’ — данный инструмент позволяет проверить тип значения свойства;
- obj.prop !== undefined — этот инструмент позволяет сравнить объект непосредственно с undefined;
- ‘prop’ in obj позволяет проверить объект на наличие его собственного или полученного свойства;
- И obj.hasOwnProperty(‘prop’) позволяет проверить объект на наличие его собственного свойства.
В этом и схожих случаях рекомендуется использовать оператор in, который обладает простым и удобным синтаксисом. Наличие оператора in демонстрирует желание проверить, имеет ли объект нужное свойство без обращения к фактическому значению данного свойства.
Деструктурируйте доступ к свойствам нужного объекта
Деструктурирование нужного объекта позволяет непосредственно извлекать значения свойства объекта в переменные или, если такое свойство не существует, устанавливать значение по дефаулту. Такой вариант позволяет исключить прямой контакт с undefined.
Извлечение свойств теперь выглядит примерно так:
Деструктурирование хорошо, когда можно указать значение по умолчанию, и это значение будет возвращено при попытке доступа к отсутствующему свойству. В конечном счёте, благодаря деструктурированию вы сможете избежать появления undefined и всех сопутствующих проблем.
Это интересно: что означает «JavaScript error: Mutations are not initialized.
Заключение
В нашей статье мы разобрали, почему появляется ошибка «TypeError: Cannot read property ‘xxx’ of undefined», как она переводится и как от неё можно избавиться. Во избежание возникновения данной ошибки присвойте начальное значение соответствующей переменной. Это позволит избежать появления рассмотренной выше дисфункции при отладке вашего кода.
Hi
Having some issues with autoUpdate.
It find’s the update but before it’s going to download the update it gives me a error
TypeError: Cannot read property ‘url’ of undefined
cant find out why it’s giving me this error
Version:
electron-updater = 2.16.1
electron = 1.7.9
electron-builder = 19.46.9
package.json
{
"name": "Wired",
"version": "0.1.0",
"description": "Home assistant",
"repository": {
"type": "git",
"url": "https://github.com/andrewo0/wired.git"
},
"scripts": {
"postinstall": "install-app-deps"
},
"dependencies": {
"electron-updater": "^2.16.1",
"electron-log": "^1.3.0"
},
"devDependencies": {
"electron-builder": "19.46.9",
"electron-updater": "^2.16.1",
"electron": "1.7.9",
"gulp": "^3.9.1",
"mocha": "^4.0.1",
"spectron": "^3.7.2",
"webpack-stream": "^3.2.0"
},
"build": {
"appId": "com.electron.wired",
"publish": [
{
"provider": "github",
"owner": "andrewo0",
"private": true
}
],
"win": {
"target": "nsis"
},
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true
},
"mac": {
"category": "your.app.category.type"
}
}
}
index.js
const {app, BrowserWindow, Menu, protocol, ipcMain} = require('electron');
const log = require('electron-log');
const {autoUpdater} = require("electron-updater");
let window;
let path;
let json;
path = require('path');
json = require('settings.json');
autoUpdater.logger = log;
autoUpdater.logger.transports.file.level = 'info';
log.info('App starting...');
function sendStatusToWindow(text) {
log.info(text);
window.webContents.send('message', text);
}
function mainWindow(){
window = new BrowserWindow({
title: json.name,
width: json.settings.width,
height: json.settings.height,
frame: json.settings.frame,
titleBarStyle: json.settings.titlebarstyle,
backgroundColor: '#000000',
show: false
});
window.loadURL('file://' + path.join(__dirname, '..', '..') + '/index.html#v' + app.getVersion());
window.once('ready-to-show', () => {
window.show()
})
window.on('closed', function () {
window = null;
});
return window;
}
app.on('ready', function() {
autoUpdater.checkForUpdates();
});
autoUpdater.on('checking-for-update', () => {
sendStatusToWindow('Checking for update...');
})
autoUpdater.on('update-available', (info) => {
sendStatusToWindow('Update available.');
})
autoUpdater.on('update-not-available', (info) => {
sendStatusToWindow('Update not available.');
})
autoUpdater.on('error', (err) => {
sendStatusToWindow('Error in auto-updater. ' + err);
})
autoUpdater.on('download-progress', (progressObj) => {
let log_message = "Download speed: " + progressObj.bytesPerSecond;
log_message = log_message + ' - Downloaded ' + progressObj.percent + '%';
log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')';
sendStatusToWindow(log_message);
})
autoUpdater.on('update-downloaded', (info) => {
sendStatusToWindow('Update downloaded');
});
app.on('ready', function () {
mainWindow();
});
app.on('window-all-closed', () => {
app.quit();
});
Log:
[2017-11-30 09:38:00:0536] [info] App starting...
[2017-11-30 09:38:00:0607] [info] Checking for update
[2017-11-30 09:38:00:0607] [info] Checking for update...
[2017-11-30 09:38:01:0926] [info] Generated new staging user ID:
[2017-11-30 09:38:03:0907] [info] Found version 0.1.1 (url: Wired-Setup-0.1.1.exe)
[2017-11-30 09:38:03:0907] [info] Update available.
[2017-11-30 09:38:03:0908] [info] Downloading update from Wired-Setup-0.1.1.exe
[2017-11-30 09:38:03:0912] [error] Error: TypeError: Cannot read property 'url' of undefined
at updateInfo.files.map.it (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcPrivateGitHubProvider.ts:101:63)
at Array.map (native)
at PrivateGitHubProvider.resolveFiles (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcPrivateGitHubProvider.ts:98:29)
at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcNsisUpdater.ts:19:53
From previous event:
at NsisUpdater.doDownloadUpdate (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutNsisUpdater.js:133:11)
at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:304:25
at Generator.next (<anonymous>)
From previous event:
at NsisUpdater.downloadUpdate (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutAppUpdater.js:355:11)
at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:280:49
From previous event:
at NsisUpdater.doCheckForUpdates (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutAppUpdater.js:326:11)
at C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:228:25
at Generator.next (<anonymous>)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
at NsisUpdater._checkForUpdates (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updateroutAppUpdater.js:280:11)
at NsisUpdater.checkForUpdates (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarnode_moduleselectron-updatersrcAppUpdater.ts:177:35)
at App.<anonymous> (C:UsersAndrewAppDataLocalProgramsWiredresourcesapp.asarjavascriptsmainindex.js:45:15)
at emitTwo (events.js:111:20)
at App.emit (events.js:194:7)
[2017-11-30 09:38:03:0912] [info] Error in auto-updater. TypeError: Cannot read property 'url' of undefined
Если при подписании на сайте ЕИС (ЕРУЗ) https://zakupki.gov.ru/ возникает ошибка «Cannot read properties of undefined (reading ‘CreateObjectAsync’)», мы рекомендуем в первую очередь использовать браузер Chromium GOST, так как ЕИС корректно работает именно в нём. Если вы планируете работать в Яндекс.Браузере — необходимо выполнить дополнительные настройки.
Если вы хотите использовать другой браузер, в котором возникает эта ошибка — рекомендуем обратиться в техническую поддержку ЕИС для уточнения сроков исправления ошибки в нужном для вас браузере.
Настройте для работы браузер Chromium GOST
1. Установите браузер:
- Автоматически с нашего Веб-диска. После установки переходите к пункту 2 инструкции.
- Вручную по ссылке https://github.com/deemru/Chromium-Gost/releases/. На открывшейся странице выберите версию браузера, которая соответствует разрядности вашей операционной системы, разрядность вашей системы можно определить следующими способами:
а) Нажать правой кнопкой мыши на Мой компьютер — Свойства.
б) Нажать комбинацию клавиш Win+Pause.
в) Нажать правой кнопкой мыши на Пуск — Система.
г) Воспользоваться инструкцией от Microsoft.
Запустите скачанный файл и следуйте подсказкам на экране для установки
2. Запустите браузер Chromium GOST и откройте в нём ссылку https://chrome.google.com/webstore/detail/cryptopro-extension-for-c/iifchhfnnmpdbibifmljnfjhpififfog. Проверьте, что расширение с открывшейся страницы установлено (должна отобразиться кнопка «Удалить из Chrome»):
Если вы видите кнопку «Установить» — нажмите её для установки расширения:
3. Повторите подписание документов в ЕИС
Настроить для работы Яндекс.Браузер
1. Скачайте браузер по ссылке https://browser.yandex.ru/ . Если Яндекс.Браузер уже установлен и ранее ЕИС (ЕРУЗ) работал в нём корректно, то переходите к пункту 4.
2. В Яндекс.Браузере зайдите в раздел «Настройки» — «Системные», либо откройте в нем ссылку: browser://settings/system
Включите настройку «Подключаться к сайтам, использующим шифрование по ГОСТ. Требуется КриптоПро»:
3. Установите расширение https://chrome.google.com/webstore/detail/cryptopro-extension-for-c/iifchhfnnmpdbibifmljnfjhpififfog так же, как это описано ранее в инструкции про Chromium GOST.
4. Повторите подписание в ЕИС. Если ошибка сохранилась, для нормальной работы портала в Яндекс.Браузере нужно выключить расширение из каталога Opera:
Откройте «Настройки» — «Дополнения», либо откройте в браузере ссылку browser://tune/
Отключите расширение Каталог КриптоПро ЭЦП переведя ползунок в левое положение:
Внимание! Изменение этой настройки может негативно повлиять работу на некоторых сайтах, например на www.sberbank-ast.ru, www.rts-tender.ru и https://etp.gpb.ru/ . Решение об отключении вы принимаете самостоятельно!
Перезапустите браузер и повторите подписание в ЕИС.
Допустим, вы делаете страницу с формой и полем ввода:
<form name="myform">
<input name="myinput" value="10" />
</form>
Нужно, чтобы скрипт нашёл эту форму, достал из неё значение поля ввода и вывел его на экран. Вы пишете скрипт и оформляете его как отдельный файл, который подключаете в разделе head:
<script>
var str = '';
for(i=0; i < document.myform.elements.length; i++){
str += document.myform.elements[i].name +
'=' + encodeURIComponent(document.myform.elements[i].value) +
(i == document.myform.elements.length -1 ? '' : '&');
}
alert(str);
</script>
Этот скрипт должен быть правильным. При тестировании внутри консоли он делает именно то, что нужно. Но после запуска скрипт падает с ошибкой:
❌ Uncaught TypeError: Cannot read property
Это означает: «Вы пытаетесь прочитать у объекта какое-то свойство, но я не могу его найти, а значит, не могу и прочитать то, чего нет».
Странно, ведь вы уверены, что у этого объекта такое свойство точно есть, и вы сто раз так уже делали.
Всё так и одновременно не так.
Что делать с ошибкой Uncaught TypeError: Cannot read property
Эта ошибка чаще всего происходит, когда вы обращаетесь к свойствам объекта раньше, чем объект готов:
- Скорее всего, объект ещё не загрузился.
- Может быть, этот объект должен появиться на странице по скрипту, который ещё не выполнился.
- Допущена опечатка в названии объекта, поэтому при обращении к нему скрипт его не находит.
Наш случай — первый и самый распространённый: мы вызываем скрипт в разделе <head>, но форма у нас ещё не готова — она банально не загружена в документ, поэтому скрипт не может прочитать свойства несуществующей формы.
Чтобы избавиться от этой ошибки, нужно добавить в вызов скрипта атрибут defer
— он заставит скрипт подождать, пока страница загрузится полностью, вместе с формой.
<script defer src="...">
Второй вариант — поместить вызов скрипта сразу после формы, тогда к моменту вызова всё окажется на своих местах и ошибки не будет. Или вообще в конце всего документа.
Getting this error when running server.js.
Started http server.
info - socket.io started
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Cannot read property 'url' of undefined
at Function.handle (/opt/lampp/htdocs/notifications/sites/all/modules/nodejs/node_modules/express/node_modules/connect/lib/proto.js:105:18)
at Server.app (/opt/lampp/htdocs/notifications/sites/all/modules/nodejs/node_modules/express/node_modules/connect/lib/connect.js:60:31)
at Server.serverListening (/opt/lampp/htdocs/notifications/sites/all/modules/nodejs/node_modules/socket.io/node_modules/policyfile/lib/server.js:136:16)
at Server.g (events.js:156:14)
at Server.emit (events.js:64:17)
at Array.0 (net.js:777:10)
at EventEmitter._tickCallback (node.js:192:40)
This is the output of npm install
require@0.4.9 ./node_modules/require
└── uglify-js@1.0.3
express@3.0.0alpha1 ./node_modules/express
├── mime@1.2.5
├── commander@0.5.2
├── mkdirp@0.3.1
├── debug@0.6.0
└── connect@2.1.2
socket.io@0.9.6 ./node_modules/socket.io
├── policyfile@0.0.4
├── redis@0.6.7
└── socket.io-client@0.9.6
And this is my config file:
backendSettings = {
"scheme":"http",
"host":"localhost",
"port":8080,
"resource":"/socket.io",
"publishUrl":"/notifications/nodejs/publish",
"serviceKey":"54468779wifjo78fjwijowef",
"backend":{
"port":80,
"host":"localhost",
"messagePath":"/nodejs/message"
},
"clientsCanWriteToChannels":false,
"clientsCanWriteToClients":false,
"extensions":"",
"debug":true,
"transports":["websocket",
"flashsocket",
"htmlfile",
"xhr-polling",
"jsonp-polling"],
"jsMinification":true,
"jsEtag":true,
"logLevel":1};
Thanks in advance
The “cannot read property of undefined” error occurs when you attempt to access a property or method of a variable that is undefined
. You can fix it by adding an undefined
check on the variable before accessing it.
Depending on your scenario, doing any one of the following might resolve the error:
- Add an
undefined
check on the variable before accessing it. - Access the property/method on a replacement for the
undefined
variable. - Use a fallback result instead of accessing the property.
- Check your code to find out why the variable is
undefined
.
1. Add undefined
check on variable
To fix the “cannot read property of undefined” error, check that the value is not undefined
before accessing the property.
For example, in this code:
const auth = undefined;
console.log(auth); // undefined
// ❌ TypeError: Cannot read properties of undefined (reading 'user')
console.log(auth.user.name);
We can fix the error by adding an optional chaining operator (?.
) on the variable before accessing a property. If the variable is undefined
or null
, the operator will return undefined
immediately and prevent the property access.
const auth = undefined;
console.log(auth); // undefined
// ✅ No error
console.log(auth?.user?.name); // undefined
The optional chaining operator also works when using bracket notation for property access:
const auth = undefined;
console.log(auth); // undefined
// ✅ No error
console.log(auth?.['user']?.['name']); // undefined
This means that we can use it on arrays:
const arr = undefined;
console.log(arr?.[0]); // undefined
// Array containing an object
console.log(arr?.[2]?.prop); // undefined
Note
Before the optional chaining was available, the only way to avoid this error was to manually check for the truthiness of every containing object of the property in the nested hierarchy, i.e.:
const a = undefined;
// Optional chaining
if (a?.b?.c?.d?.e) {
console.log(`e: ${e}`);
}
// No optional chaining
if (a && a.b && a.b.c && a.b.c.d && a.b.c.d.e) {
console.log(`e: ${e}`);
}
2. Use replacement for undefined
variable
In the first approach, we don’t access the property or method when the variable turns out to be undefined
. In this solution, we provide a fallback value that we’ll access the property or method on.
For example:
const str = undefined;
const result = (str ?? 'old str').replace('old', 'new');
console.log(result); // 'new str'
The null coalescing operator (??
) returns the value to its left if it is not null
or undefined
. If it is, then ??
returns the value to its right.
console.log(5 ?? 10); // 5
console.log(undefined ?? 10); // 10
The logical OR (||
) operator can also do this:
console.log(5 || 10); // 5
console.log(undefined || 10); // 10
3. Use fallback value instead of accessing property
Another way to solve the “cannot read property of undefined” error is to avoid the property access altogether when the variable is undefined
and use a default fallback value instead.
We can do this by combining the optional chaining operator (?.
) and the nullish coalescing operator (??
).
For example:
const arr = undefined;
// Using "0" as a fallback value
const arrLength = arr?.length ?? 0;
console.log(arrLength); // 0
const str = undefined;
// Using "0" as a fallback value
const strLength = str?.length ?? 0;
console.log(strLength); // 0
4. Find out why the variable is undefined
The solutions above are handy when we don’t know beforehand if the variable will be undefined
or not. But there are situations where the “cannot read property of undefined” error is caused by a coding error that led to the variable being undefined
.
It could be that you forgot to initialize the variable:
let doubles;
let nums = [1, 2, 3, 4, 5];
for (const num of nums) {
let double = num * 2;
// ❌ TypeError: cannot read properties of undefined (reading 'push')
doubles.push(double);
}
console.log(doubles);
In this example, we call the push()
method on the doubles
variable without first initializing it.
let doubles;
console.log(doubles); // undefined
Because an uninitialized variable has a default value of undefined
in JavaScript, accessing a property/method causes the error to be thrown.
The obvious fix for the error, in this case, is to assign the variable to a defined value.
// ✅ "doubles" initialized before use
let doubles = [];
let nums = [1, 2, 3, 4, 5];
for (const num of nums) {
let double = num * 2;
// push() called - no error thrown
doubles.push(double);
}
console.log(doubles); // [ 2, 4, 6, 8, 10 ]
Another common mistake that causes this error is accessing an element from an array variable before accessing an Array
property/method, instead of accessing the property/method on the actual array variable.
const array = [];
// ❌ TypeError: Cannot read properties of undefined (reading 'push')
array[0].push('html');
array[0].push('css');
array[0].push('javascript');
console.log(array);
Accessing the 0
property with bracket indexing gives us the element at index 0
of the array. The array has no element, so arr[0]
evaluates to undefined
and calling push()
on it causes the error.
To fix this, we need to call the method on the array variable, not one of its elements.
const array = [];
// ✅ Call push() on "array" variable, not "array[0]"
array.push('html');
array.push('css');
array.push('javascript');
console.log(array); // [ 'html', 'css', 'javascript' ]
Conclusion
In this article, we saw some helpful ways of resolving the “cannot read property of undefined” error in JavaScript. They might not resolve the error totally in your case, but they should assist you during your debugging.
Every Crazy Thing JavaScript Does
A captivating guide to the subtle caveats and lesser-known parts of JavaScript.
Sign up and receive a free copy immediately.
Ayibatari Ibaba is a software developer with years of experience building websites and apps. He has written extensively on a wide range of programming topics and has created dozens of apps and open-source libraries.
Hi
Having some issues with autoUpdate.
It find’s the update but before it’s going to download the update it gives me a error
TypeError: Cannot read property ‘url’ of undefined
cant find out why it’s giving me this error
Version:
electron-updater = 2.16.1
electron = 1.7.9
electron-builder = 19.46.9
package.json
{
"name": "Wired",
"version": "0.1.0",
"description": "Home assistant",
"repository": {
"type": "git",
"url": "https://github.com/andrewo0/wired.git"
},
"scripts": {
"postinstall": "install-app-deps"
},
"dependencies": {
"electron-updater": "^2.16.1",
"electron-log": "^1.3.0"
},
"devDependencies": {
"electron-builder": "19.46.9",
"electron-updater": "^2.16.1",
"electron": "1.7.9",
"gulp": "^3.9.1",
"mocha": "^4.0.1",
"spectron": "^3.7.2",
"webpack-stream": "^3.2.0"
},
"build": {
"appId": "com.electron.wired",
"publish": [
{
"provider": "github",
"owner": "andrewo0",
"private": true
}
],
"win": {
"target": "nsis"
},
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true
},
"mac": {
"category": "your.app.category.type"
}
}
}
index.js
const {app, BrowserWindow, Menu, protocol, ipcMain} = require('electron');
const log = require('electron-log');
const {autoUpdater} = require("electron-updater");
let window;
let path;
let json;
path = require('path');
json = require('settings.json');
autoUpdater.logger = log;
autoUpdater.logger.transports.file.level = 'info';
log.info('App starting...');
function sendStatusToWindow(text) {
log.info(text);
window.webContents.send('message', text);
}
function mainWindow(){
window = new BrowserWindow({
title: json.name,
width: json.settings.width,
height: json.settings.height,
frame: json.settings.frame,
titleBarStyle: json.settings.titlebarstyle,
backgroundColor: '#000000',
show: false
});
window.loadURL('file://' + path.join(__dirname, '..', '..') + '/index.html#v' + app.getVersion());
window.once('ready-to-show', () => {
window.show()
})
window.on('closed', function () {
window = null;
});
return window;
}
app.on('ready', function() {
autoUpdater.checkForUpdates();
});
autoUpdater.on('checking-for-update', () => {
sendStatusToWindow('Checking for update...');
})
autoUpdater.on('update-available', (info) => {
sendStatusToWindow('Update available.');
})
autoUpdater.on('update-not-available', (info) => {
sendStatusToWindow('Update not available.');
})
autoUpdater.on('error', (err) => {
sendStatusToWindow('Error in auto-updater. ' + err);
})
autoUpdater.on('download-progress', (progressObj) => {
let log_message = "Download speed: " + progressObj.bytesPerSecond;
log_message = log_message + ' - Downloaded ' + progressObj.percent + '%';
log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')';
sendStatusToWindow(log_message);
})
autoUpdater.on('update-downloaded', (info) => {
sendStatusToWindow('Update downloaded');
});
app.on('ready', function () {
mainWindow();
});
app.on('window-all-closed', () => {
app.quit();
});
Log:
[2017-11-30 09:38:00:0536] [info] App starting...
[2017-11-30 09:38:00:0607] [info] Checking for update
[2017-11-30 09:38:00:0607] [info] Checking for update...
[2017-11-30 09:38:01:0926] [info] Generated new staging user ID:
[2017-11-30 09:38:03:0907] [info] Found version 0.1.1 (url: Wired-Setup-0.1.1.exe)
[2017-11-30 09:38:03:0907] [info] Update available.
[2017-11-30 09:38:03:0908] [info] Downloading update from Wired-Setup-0.1.1.exe
[2017-11-30 09:38:03:0912] [error] Error: TypeError: Cannot read property 'url' of undefined
at updateInfo.files.map.it (C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\src\PrivateGitHubProvider.ts:101:63)
at Array.map (native)
at PrivateGitHubProvider.resolveFiles (C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\src\PrivateGitHubProvider.ts:98:29)
at C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\src\NsisUpdater.ts:19:53
From previous event:
at NsisUpdater.doDownloadUpdate (C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:133:11)
at C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:304:25
at Generator.next (<anonymous>)
From previous event:
at NsisUpdater.downloadUpdate (C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:355:11)
at C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:280:49
From previous event:
at NsisUpdater.doCheckForUpdates (C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:326:11)
at C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:228:25
at Generator.next (<anonymous>)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
at NsisUpdater._checkForUpdates (C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:280:11)
at NsisUpdater.checkForUpdates (C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:177:35)
at App.<anonymous> (C:\Users\Andrew\AppData\Local\Programs\Wired\resources\app.asar\javascripts\main\index.js:45:15)
at emitTwo (events.js:111:20)
at App.emit (events.js:194:7)
[2017-11-30 09:38:03:0912] [info] Error in auto-updater. TypeError: Cannot read property 'url' of undefined
From a short tutorial I started this widget script to grab posts on Blogger. In the theme I originally made it in, it works fine without error. However, when I try to use the exact same code in a new template I’m working on, it throws the error:
Uncaught TypeError: Cannot read property ‘url’ of undefined
For the love of god I cannot figure out why it’s doing that. For debugging purposes I tried removing all other scripts, placing the code right after the <body>
tag and just before the </body>
tag.
I really don’t know anything about scripting and did this widget as a starting point in learning, but it’s been months since I messed with it. Looking at it now I just don’t see the problem. Here is the script:
<script type="text/javascript">
//<![CDATA[
function postGrabber(json) {
// The Magic
for (var i = 0; i < json.feed.entry.length; i++) {
for (var j = 0; j < json.feed.entry[i].link.length; j++) {
if (json.feed.entry[i].link[j].rel == 'alternate') {
var postUrl = json.feed.entry[i].link[j].href;
break;
}
}
// Thumbnail Stuff
var orgImgUrl = json.feed.entry[i].media$thumbnail.url ? json.feed.entry[i].media$thumbnail.url : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg';
var newImgUrl = orgImgUrl.replace('s72-c', 's' + imgSize + '-c');
var imgTag = '<a class="item-link-post" href="' + postUrl + '"><img class="item-img-thumbnail" src="' + newImgUrl + '" width="' + imgSize + '" height="' + imgSize + '"/></a>';
var authorName = json.feed.entry[i].author[0].name.$t;
var authorURL = json.feed.entry[i].author[0].uri.$t;
var authorOriImgUrl = json.feed.entry[i].author[0].gd$image.src;
var authorNewImgUrl = authorOriImgUrl.replace('s512-c', 's' + authorImgSize + '-c');
var authorImgTag = '<a class="item-link-author" href="' + authorURL + '" target="_blank" rel="nofollow"><img class="item-img-author" src="' + authorNewImgUrl + '" alt="' + authorName + '"/></a>';
// Standard Stuff
var postTitle = json.feed.entry[i].title.$t;
var postCommentCount = json.feed.entry[i].thr$total.$t;
var postSummary = json.feed.entry[i].summary.$t;
var entryShort = postSummary.substring(0, '' + summaryLength + '');
var entryEnd = entryShort.lastIndexOf(" ");
var postContent = entryShort.substring(0, entryEnd) + '...';
var postDate = json.feed.entry[i].updated.$t ? json.feed.entry[i].updated.$t : json.feed.entry[i].published.$t;
var shortDate = postDate.substring(0,10);
// Let's Make Options Here
var toggleImg = showImg ? '' + imgTag + '' : '';
var toggleTitle = showTitle ? '<h1 class="item-title">' + postTitle + '</h1>' : '';
var toggleSummary = showSummary ? '<p class="item-snippet">' + postContent + '</p>' : '';
var toggleDate = showDate ? '<span class="item-date">' + shortDate + '</span>' : '';
var toggleAuthorImg = showAuthorImg ? '' + authorImgTag + '' : '';
var toggleCommentCount = showCommentCount ? '<span class="item-comment-count">' + postCommentCount + '</span>' : '';
// The Output
var itemPost = '<div class="item-post"><div class="item-imgs">' + toggleImg + toggleAuthorImg + '</div>' + toggleCommentCount + '<a class="item-link" href=' + postUrl + '>' + toggleTitle + '</a>' + toggleSummary + toggleDate + '</div>';
// Let's Write It Down
document.write(itemPost);
}
}
//]]>
</script>
<script type="text/javascript">
// The Default Options
var imgSize = 96;
var summaryLength = 142;
var authorImgSize = 36;
var showImg = true;
var showTitle = true;
var showSummary = true;
var showDate = true;
var showAuthorImg = true;
var showCommentCount = true;
</script>
<script src="/feeds/posts/summary?orderby=published&max-results=5&alt=json-in-script&callback=postGrabber"></script>