React native - программно проверить, включена ли в удаленной JS-отладке

On React-Native, как я могу узнать, включен ли "Debug JS Remotely"?

Я попробовал посмотреть RN docs и различные пакеты NPM, но не смог узнать, как...

Ответ 1

Как программно проверить, включена ли удаленная отладка (только что нашел это своеобразное поведение сегодня по другому вопросу SO). Протестировано на RN 0,43 и с отладчиком Chrome + React Native Debugger:

const isDebuggingEnabled = (typeof atob !== 'undefined');

Изменить: только что заметил, что это было задано более полугода назад: D... ну, я оставляю его здесь для будущих поколений.

Ответ 2

Класс DedicatedWorkerGlobalScope существует, если включена удаленная отладка (в данном случае это конструктор глобального объекта). Таким образом, мы можем:

const haveRemoteDev = (typeof DedicatedWorkerGlobalScope) !== 'undefined';

Ответ 3

Пробежал через этот ответ, но не был доволен проверкой на atob или ограниченным для Android. Я нашел функцию, которая кажется довольно хорошим прокси-сервером, если работает отладчик, который называется глобальным __REMOTEDEV__.

В моем случае я хотел видеть запросы, сделанные приложением в response-native-debugger, мой полный код выглядит следующим образом:

/**
 * When the debugger is connected, remove the XHR polyfill
 * so that the chrome inspector will be able to see requests
 */
if (typeof global.__REMOTEDEV__ !== 'undefined') {
  const _XHR = GLOBAL.originalXMLHttpRequest ?
      GLOBAL.originalXMLHttpRequest :
      GLOBAL.XMLHttpRequest;

  global.XMLHttpRequest = _XHR;
}

Ответ 4

Проверьте __REMOTEDEV__ простым способом:

if(global.__REMOTEDEV__) { console.log('Remote Debug'); }

Ответ 5

Для Android в общих настройках вы можете найти статус удаленной отладки. Когда я открываю файл sharedPreferences для своего приложения.

Удаленная отладка активна

<map>
    <boolean name="remote_js_debug" value="true" />
    <boolean name="hot_module_replacement" value="true" />
    <boolean name="reload_on_js_change" value="true" />
</map>

Удаленная отладка неактивна

<map>
    <boolean name="remote_js_debug" value="false" />
    <boolean name="hot_module_replacement" value="true" />
    <boolean name="reload_on_js_change" value="true" />
</map>

Итак (только для Android) вы можете использовать модуль, подобный этому: https://github.com/sriraman/react-native-shared-preferences, чтобы проверить, активна ли удаленная отладка.