Javascript "TypeError: отменено" ошибка при вызове "fetch" на iOS

Я регистрирую ошибки клиента JS, используя Sentry, и там много TypeError: cancelled ошибки. Это происходит только на iOS. Я ничего не могу найти в Google. Это нативная ошибка Javascript или что-то еще? Что это значит?

enter image description here

Я также получаю похожие ошибки на других языках, таких как 취소됨, Abgebrochen и cancelado. Это говорит мне, что ошибка не вызвана моим кодом.

Ответы

Ответ 1

Если вы используете API fetch, это может быть проблема с AbortController и AbortSignal в iOS 11.1-12, которая будет срабатывать только тогда, когда кто-то попытается прервать запрос на выборку (именно поэтому он не будет обязательно затронет всех пользователей iOS, объяснив несоответствие).

Чтобы уточнить, iOS 11.1-12 определяет AbortController и AbortSignal в DOM, но они заглушки - смотрите здесь. Поэтому, если вы попытаетесь прервать запрос на выборку в iOS в & lt; = 12, запрос не будет прерван и, скорее всего, вызовет какую-то ошибку.

Учитывая, что это TypeError, а не AbortError, может показаться, что проблема в том, что AbortController не был должным образом/полностью определен.

EDIT: Дальнейшее чтение также указывает на то, что неудачный fetches в iOS выдает ошибки TypeError, даже для таких вещей, как заблокированные выборки. Как уже упоминалось выше, проблема может быть связана с любыми установленными блокировщиками рекламы (скажем, на взломанном iPhone) или проблемой CORS, и iOS затем выдаст TypeError - обсуждение Webgit BugZilla. Таким образом, концентрация на типе ошибки может привести вас на неверный путь.

Ответ 2

Мы сталкивались с такими же проблемами в журналах Sentry. Существует проблема с CORS, начиная с IOS 11. Мы решили проблему следующим образом: fooobar.com/info/14406660/...