Объект не имеет метода «включает» - PullRequest
0 голосов
/ 09 марта 2020

Я использую Sentry для отлова ошибок на моей платформе (Cake PHP 2. *), и мне выдаётся следующая ошибка:

TypeError ?(clients/view/1998667)
· Object http://192.168.1.130/clients/view/1998667 has no method 'includes'

Я не понял ни String ни для Array объектов в этой версии браузера не была определена функция Object.prototype.includes, поэтому я добавил ее перед любым сценарием, который потенциально может использовать этот метод объекта (перед библиотеками и пользовательским кодом).

(не совершенные функции но должен сделать трюк для моего варианта использования).

if (String.prototype.includes === undefined)
{
    console.log('String.prototype.inclues is UNDEFINED');

    String.prototype.includes = function(word){
        return this.toLowerCase().indexOf(word.toLowerCase()) > -1;
    }
}

if (Array.prototype.includes === undefined)
{
    console.log('Array.prototype.inclues is UNDEFINED');

    Array.prototype.includes = function(search){
        var includes = false;

        this.forEach(function(item){
            if (item === search)
            {
                includes = true;

                return includes;
            }
        });

        return includes;
    }
}

Странная вещь; даже когда я запускаю Android with API 16 на моем эмуляторе, Sentry продолжает перехватывать ошибку, и представление не работает должным образом, и я не могу отловить ошибку в моем Android коде.

Я даже тестировал в Safari тот же пользовательский агент из Android WebView Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; Android SDK built for x86 Build/MASTER) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Android код для консольных сообщений:

webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
         android.util.Log.d("WebView", consoleMessage.message());

         return true;
    }
});

Мой вопрос: как я могу поймать JavaScript ошибок в Android Java и что я не делаю правильно для работы определенных функций?

1 Ответ

0 голосов
/ 15 марта 2020

Sentry Android SDK не обнаружит никаких ошибок JS, но вы можете сделать что-то похожее на Обнаружение ошибки веб-просмотра и показать сообщение

Добавление обратного вызова в веб-просмотр ( например, onReceivedError), создайте Exception или SentryEvent из errorCode, description ... и вызовите Sentry.captureException (e) вручную.

...