TL;DR;

Вам может помочь переустановка сторожа.

Бесконечная загрузка зависимости graph...

Недавно я создал проект, ориентированный на реакцию.

Затем я попытался запустить его на iOS Simulator, он не смог загрузить пакет js. Для более подробной информации: react-native cli не будет генерировать пакет js.

Никакого прогресса не произойдет после Loading dependency graph... с момента вызова функции react-native start.

Для этой проблемы есть проблема.



« npm start зависает на Загрузка графика зависимостей, завершено . · Проблема № 16798 · facebook / response-native
Это отчет об ошибке? Да Вы читали Правила участия? Да Среда Среда: ОС: macOS Sierra… github.com »



Я запускаю команду react-native bundle, чтобы разделить проблемы.

Ага. Происходит то же самое.

Чтение встроенного cli

Тогда я решил почитать исходники для react-native cli.

Сначала я поискал определение команды сборки. Это написано на react-native/local-cli/bundle/buildBundle.js вот так.

Я удалил некоторые коды. Но вся постройка осуществляется модулем метро.

метро

Metro - это сборщик JavaScript для React Native. Ридми говорит.



И это функция, вызываемая из встроенного cli. Это вызывает Server класс.

И Server создайте экземпляр Bundler, а затем вызовите getDependencyGraph функцию.

Затем Bundler#getDependencyGraph вызывает DependencyGraph#load.

И DependencyGraph звонки JestHeatMap#build

Кстати, при вызовеopts.reporter.update({tupe: 'deps_graph_loaded'}); в консоли появляется Loading dependency graph....

карта-шутка

Это подмодуль фреймворка шутливого тестирования.



В этой библиотеке есть подробный комментарий о создании тепловых карт.

* HasteMap создается следующим образом:
* 1. чтение данных из кеша или создание пустой структуры.
* 2. сканирование файловой системы.
* * пустой кеш: сканирование всего файловая система.
* * кеш доступен:
* * если доступен сторож: получить изменения файловой системы.
* * если сторож недоступен: сканировать всю файловую систему.
* * создавать объекты метаданных для каждого файла. Это создает часть файлов
* HasteMap.
* 3. Анализирует и извлекает метаданные из измененных файлов.
* * это выполняется параллельно с рабочими процессами для повышения производительности .
* * в худшем случае нужно проанализировать все файлы.
* * в лучшем случае нет доступа к файловой системе и извлекать все данные из
* кеша.
* * средний случай - небольшое количество измененных файлов.
* 4. сериализовать новую `HasteMap` в файл кеша.
* Рабочие процессы могут напрямую обращаться к кешу через` HasteMap.read () `.

Https://github.com/facebook/jest/blob/master/packages/jest-haste-map/src/index.js#L179-L195

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

$ watchman watch .

Это вообще не даст никакого ответа.

Обычно эта команда возвращается немедленно. И вот такие выходы.

watchman watch .
{
    "version": "4.9.0",
    "watch": "/PATH/TO/YOUR/WOKING_DIR",
    "watcher": "fsevents"
}

Я не мог найти ни одной подсказки. Но я просто погуглил «react-native apfs». (Потому что я думал, что изменения файловой системы могут быть связаны с High Sierra.)

И нашел интересную проблему.



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

Я просто пробовал это. Потом…

Это сработало!!

Хотя не удалось найти подробностей о корне этой проблемы, я думаю, что этого достаточно.