illegal invocation что значит

Illegal invocation вылезает у некоторых пользователей стабильно, как дебажить?

Ошибка IllegalInvocation вылезает на 371 строке Backbone.js при попытке сделать reset() коллекции.
Самое смешное, что проблема вылезает на 2-3 компьютерах. Там стоит такой же хром, все нормально (подключался по TeamViewer), а ошибка есть.
Ошибка вылезает на методе call() или apply() вот здесь: backbonejs.org/docs/backbone.html#section-48

Поймать ошибку у себя мы не можем.
Вопроса два:
1. Как вообще такое может быть, когда у кого-то работает, а у кого-то нет при том, что версия Хрома у них последняя, да и пробовали они разные браузеры.
2. Как дебажить такое? И как ловить, тем более, когда проблема в итоге в библиотеке?

Оценить 2 комментария

Как вообще такое может быть, когда у кого-то работает, а у кого-то нет

Ответ на этот вопрос зависит от того, что вы узнаете в процессе отладки. От причины ошибки, проще говоря.

проблема в итоге в библиотеке?

На самом деле, если вы хорошо подумаете, в моём ответе очень много полезной информации и я вовсе не пытался вас потроллить.

Да, надо действительно нажать F12, только открыть не консоль, а Sources.
Проблема на удалённом компьютере? Значит, надо к нему подключиться.
Удалённый компьютер принадлежит клиенту? Значит, надо вежливо с ним договориться. Очевидно, раз вы выяснили хотя бы сообщение об ошибке, клиент замотивирован вам помочь.

Источник

jQuery v1.7.2

I have this funcion that is giving me the following error while executing :

Here’s the function :

9 Answers 9

Try to set processData: false in ajax settings like this

I think you need to have strings as the data values. It’s likely something internally within jQuery that isn’t encoding/serializing correctly the To & From Objects.

Notice also on the lines:

You don’t need the jQuery wrapper as To & From are already jQuery objects.

Just for the record it can also happen if you try to use undeclared variable in data like

If you want to submit a form using Javascript FormData API with uploading files you need to set below two options:

You can try as follows:

In my case, I just changed

Commented out «Content-Type»: «application/json»

In My case I have’t define all variables which I am passing to data in ajax.

I have just defined variable var search_candidate = «candidate name»; and its working.

See this answer for more information on why that can be a problem: Why are certain function calls termed «illegal invocations» in JavaScript?

The way I was able to discover this was by adding a console.log(list[ firingIndex ]) to jQuery so I could track what it was firing.

In my case (using webpack 4) within an anonymous function, that I was using as a callback.

Источник

Ошибки в JavaScript и как их исправить

JavaScript может быть кошмаром при отладке: некоторые ошибки, которые он выдает, могут быть очень трудны для понимания с первого взгляда, и выдаваемые номера строк также не всегда полезны. Разве не было бы полезно иметь список, глядя на который, можно понять смысл ошибок и как исправить их? Вот он!

Ниже представлен список странных ошибок в JavaScript. Разные браузеры могут выдавать разные сообщения об одинаковых ошибках, поэтому приведено несколько примеров там, где возможно.

Как читать ошибки?

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

Типичная ошибка из Chrome выглядит так:

Теперь к самим ошибкам.

Uncaught TypeError: undefined is not a function

Связанные ошибки: number is not a function, object is not a function, string is not a function, Unhandled Error: ‘foo’ is not a function, Function Expected

Читайте также:  человек узнавший что он безнадежно болен переживает различные психологические реакции так называемые

Возникает при попытке вызова значения как функции, когда значение функцией не является. Например:

Эта ошибка обычно возникает, если вы пытаетесь вызвать функцию для объекта, но опечатались в названии.

Другие вариации, такие как “number is not a function” возникают при попытке вызвать число, как будто оно является функцией.

Как исправить ошибку: убедитесь в корректности имени функции. Для этой ошибки, номер строки обычно указывает в правильное место.

Uncaught ReferenceError: Invalid left-hand side in assignment

Связанные ошибки: Uncaught exception: ReferenceError: Cannot assign to ‘functionCall()’, Uncaught exception: ReferenceError: Cannot assign to ‘this’

Вызвано попыткой присвоить значение тому, чему невозможно присвоить значение.

Наиболее частый пример этой ошибки — это условие в if:

В этом примере программист случайно использовал один знак равенства вместо двух. Выражение “left-hand side in assignment” относится к левой части знака равенства, а, как можно видеть в данном примере, левая часть содержит что-то, чему нельзя присвоить значение, что и приводит к ошибке.

Uncaught TypeError: Converting circular structure to JSON

Связанные ошибки: Uncaught exception: TypeError: JSON.stringify: Not an acyclic Object, TypeError: cyclic object value, Circular reference in value argument not supported

Так как a и b в примере выше имеют ссылки друг на друга, результирующий объект не может быть приведен к JSON.

Как исправить ошибку: удалите циклические ссылки, как в примере выше, из всех объектов, которые вы хотите сконвертировать в JSON.

Unexpected token ;

Связанные ошибки: Expected ), missing ) after argument list

Интерпретатор JavaScript что-то ожидал, но не обнаружил там этого. Обычно вызвано пропущенными фигурными, круглыми или квадратными скобками.

Токен в данной ошибке может быть разным — может быть написано “Unexpected token ]”, “Expected <” или что-то еще.

Как исправить ошибку: иногда номер строки не указывает на правильное местоположение, что затрудняет исправление ошибки.

Ошибка с [ ] < >( ) обычно вызвано несовпадающей парой. Проверьте, все ли ваши скобки имеют закрывающую пару. В этом случае, номер строки обычно указывает на что-то другое, а не на проблемный символ.

Unexpected / связано с регулярными выражениями. Номер строки для данного случая обычно правильный.

Unexpected; обычно вызвано символом; внутри литерала объекта или массива, или списка аргументов вызова функции. Номер строки обычно также будет верным для данного случая.

Uncaught SyntaxError: Unexpected token ILLEGAL

Связанные ошибки: Unterminated String Literal, Invalid Line Terminator

В строковом литерале пропущена закрывающая кавычка.

Как исправить ошибку: убедитесь, что все строки имеют правильные закрывающие кавычки.

Uncaught TypeError: Cannot read property ‘foo’ of null, Uncaught TypeError: Cannot read property ‘foo’ of undefined

Связанные ошибки: TypeError: someVal is null, Unable to get property ‘foo’ of undefined or null reference

Попытка прочитать null или undefined так, как будто это объект. Например:

Как исправить ошибку: обычно вызвано опечатками. Проверьте, все ли переменные, использованные рядом со строкой, указывающей на ошибку, правильно названы.

Uncaught TypeError: Cannot set property ‘foo’ of null, Uncaught TypeError: Cannot set property ‘foo’ of undefined

Связанные ошибки: TypeError: someVal is undefined, Unable to set property ‘foo’ of undefined or null reference

Попытка записать null или undefined так, как будто это объект. Например:

Как исправить ошибку: это тоже обычно вызвано ошибками. Проверьте имена переменных рядом со строкой, указывающей на ошибку.

Uncaught RangeError: Maximum call stack size exceeded

Связанные ошибки: Uncaught exception: RangeError: Maximum recursion depth exceeded, too much recursion, Stack overflow

Обычно вызвано неправильно программной логикой, что приводит к бесконечному вызову рекурсивной функции.

Читайте также:  что делать если большая кофта

Как исправить ошибку: проверьте рекурсивные функции на ошибки, которые могут вынудить их делать рекурсивные вызовы вечно.

Uncaught URIError: URI malformed

Связанные ошибки: URIError: malformed URI sequence

Как исправить ошибку: убедитесь, что вызовы decodeURIComponent на строке ошибки получают корректные входные данные.

XMLHttpRequest cannot load some/url. No ‘Access-Control-Allow-Origin’ header is present on the requested resource

Связанные ошибки: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at some/url

Эта проблема всегда связана с использованием XMLHttpRequest.

Как исправить ошибку: убедитесь в корректности запрашиваемого URL и в том, что он удовлетворяет same-origin policy. Хороший способ найти проблемный код — посмотреть на URL в сообщении ошибки и найти его в своём коде.

InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable

Связанные ошибки: InvalidStateError, DOMException code 11

Означает то, что код вызвал функцию, которую нельзя было вызывать в текущем состоянии. Обычно связано c XMLHttpRequest при попытке вызвать на нём функции до его готовности.

Как исправить ошибку: посмотрите на код в строке, указывающей на ошибку, и убедитесь, что он вызывается в правильный момент или добавляет нужные вызовы до этого (как с xhr.open ).

Заключение

JavaScript содержит в себе одни из самых бесполезных ошибок, которые я когда-либо видел, за исключением печально известной Expected T_PAAMAYIM_NEKUDOTAYIM в PHP. Большая ознакомленность с ошибками привносит больше ясности. Современные браузеры тоже помогают, так как больше не выдают абсолютно бесполезные ошибки, как это было раньше.

Какие самые непонятные ошибки вы встречали? Делитесь своими наблюдениями в комментариях.

Источник

Illegal invocation что значит

Today I wrote a very simple page. To get a DOM in the page, I used the following notation:

Yesterday, it seems that there is no problem, and it does not have any problems when running under IE6

8, but it reports an error in other browsers, and reports such an error:

Uncaught TypeError: Illegal invocationerror: Illegal call

At that time, I didn’t pay much attention to it. At that time, I didn’t carefully figure out what was going on. Then I sent a message on Weibo and made a record. When I came back after eating, I saw a reply, which was broadcast by taibo, explaining the reason: when the call/apply context is illegal, this exception will be thrown, and IE9 also abides by this specification. The following is an example that can avoid reporting this error. I didn’t pay much attention to it, and then he sent a ref

After reading it, I really relaxed. The above words in IE9 and non-IE (such as Chrome) browsers are like:

Writing this way will obviously lead to a call error, because the DOM element with id demo should be in the document object, not in other objects. You can get the desired result by calling document instead:

But under my IE6, I got an error, and then I started to find the reason.

I tried to iterate through all the attributes in d

But the situation is very bad. I don’t know if it’s my system problem, or there is indeed this problem. After running, the «0x00000000» memory referenced by the «»0x7e2cf10c» instruction appears. This memory cannot be «read». «

After that, I tried to use typeof and wanted to see what it was. According to my expectations, it should be a function. Only the function can be called «()»

The results I got in my IE6 disappointed me «object», but fortunately I got «function» in Chrome. Maybe you think the above typeof may be inaccurate, then using the following method should be no objection

Читайте также:  при поступлении в вуз какие документы нужны и должны

alert(Object.prototype.toString.call(d)); The result still shows that: under IE is object and Chrome is function

The most amazing thing is that under my ie6, d has no toString method, I think it should be a very «clean» object (no toString, valueOf methods), and Chrome is as expected

What’s more important is that it is not an instance of Function, nor an instance of Object, and it also meets expectations under Chrome.

How does it work? If it is a method under the Global object, such as parseInt, isNaN, etc., it should be able to be deleted. Obviously it belongs to the method under the docuemnt object rather than the method under the Global. As for how it is implemented, I don’t know yet for the time being. I just think that an object (or its typeof has a problem) can also be called. This is amazing.

()Although javascript has multiple meanings, it is nothing more than the following:

1. List of functions at the time of function declaration Example: function fnName(arg1, arg2) <>;

2. Used with some statements to limit the role, for example: for (), while (), etc.:

3. Used with new to pass parameters-() can be omitted without passing parameters, but it is not recommended. Example: var obj1 = new FunName();

4. Calculate an expression to increase the priority of the operation Example: var a = 5 * (3 + 4)

5. Grouping for capturing in regular expression

The question above confuses me is how an object is called, the () must be a function caller, then document.getElementById should be a function, but the actual result is not (or this test type. Is there a problem?!)

It needs to be explained that the original page was not written in the dormitory, the browser used was IE8, and after I returned to the dormitory, the book was loaded with IE6 (for testing purposes, although I hate ie6), other browsers Not all tested for the time being.

Источник

Русские Блоги

Появляются данные для отправки формы Uncaught TypeError: Illegal invocation (незаконный доступ)

Появляются данные для отправки формы Uncaught TypeError: Illegal invocation (незаконный доступ)

var formData=new FormData($(«.please»)[0]);
$.ajax( <
type:“post”,
url:order_url+’/web/user/getInvitationCode’,
data:formData,
success:function (data) <
console.log(data);
>
>,
error:function (data) <
layer.msg («Запрос не удался, обновите страницу и повторите попытку»);
>
>)`

Это потому, что некоторые параметры отсутствуют.
async: false, // синхронная загрузка
cache: false, // Не нужно кешировать загруженные файлы
processData: false, // не обрабатываем данные
contentType: false, // Не устанавливать тип содержимого

Запрос ajax плюс эти данные могут решить проблему незаконных запросов!

Интеллектуальная рекомендация

SpringBoot интегрирует Swagger2 для автоматического создания документов Api

Теперь, когда разделение на интерфейсную и внутреннюю части разработки стало тенденцией, в таком режиме разработки документы интерфейса особенно важны для интерфейсной части. Напомним, что в моей пред.

Предыдущие последствия движения 4 мая

Так называемый 4 мая движение в память о более чем сто лет назад, и 4 мая 1919 года группа колледжа парад. Прочитав эту фразу, я чувствую, что сила воли новорожденной всегда принадлежит к новому покол.

Виртуальная машина Linux быстро создает полный процесс RabbitMQ (версия для распаковки) (простой и понятный, а не про тест может написать так много)

Отказ от ответственности: я создаю среду виртуальной машины Linux в системе Windows 10. Все установочные пакеты загружаются, распаковываются и устанавливаются вручную. Любой, кто любит устанавливать о.

Источник

Сказочный портал