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.)
И нашел интересную проблему.
Конечно, таких ошибок я не видел. Но предлагаемый обходной путь - удалить сторожа и переустановить его.
Я просто пробовал это. Потом…
Это сработало!!
Хотя не удалось найти подробностей о корне этой проблемы, я думаю, что этого достаточно.