Почему GitHub установил эту переменную?
Я не уверен, честно. GitHub описывает некоторые их переменных окружения по умолчанию с существенным упущением RCT_NO_LAUNCH_PACKAGER
для моей ситуации.
Кажется, что переменная ENV намеренно установлена GitHub, так к какой альтернативе они подталкивают пользователей для создания сборки React Native iOS?
Похоже, они не дают никаких указаний. Похоже, они сделали призыв установить эту переменную и предоставить ее пользователям разобраться во всем.
Отключение RCT_NO_LAUNCH_PACKAGER кажется жизнеспособным вариантом, но есть ли у этого подхода недостатки? Я предполагаю, что это было изначально установлено по уважительной причине.
Есть некоторые недостатки. Или, скорее, простое отключение этой переменной не является «исправлением», которое решает все проблемы. По крайней мере, не в моем случае.
Мое решение заключалось в том, чтобы взломать пару сценариев фазы сборки и использовать переменную env CI
, которая установлена на "true"
в GitHub.
Start Packager
Я добавил это вверху.
export RCT_METRO_PORT="${RCT_METRO_PORT:=8081}"
echo "export RCT_METRO_PORT=${RCT_METRO_PORT}" > "${SRCROOT}/../node_modules/react-native/scripts/.packager.env"
# My changes...
if [ "${CI}" = "true" ];
then
sh -c "bash $SRCROOT/../node_modules/react-native/scripts/launchPackager.command" &> /tmp/packager.log &
exit 0
fi
... rest of the script.
Bundle React Native code and images
Я изменил скрипт таким образом, чтобы очистить мой запуск упаковщик выше. Оглядываясь назад, я не знаю, необходимо ли это.
export NODE_BINARY=$(which node)
../node_modules/react-native/scripts/react-native-xcode.sh
../node_modules/expo-updates/scripts/create-manifest-ios.sh
if [ "${CI}" = "true" ];
then
kill -9 `ps ax | grep -i 'launchPackager.command' | grep -v grep | awk '{print $1}'` || true
kill -9 `ps ax | grep -i 'cli.js start' | grep -v grep | awk '{print $1}'` || true
fi
Наконец, то, чего я не ожидал, было после того, как упаковщик заработал, я обнаружил другую проблему. [CP-User] [RNFB] Core Configuration
завис навсегда.
Это известная проблема , и , которые описаны в их документах . Для меня исправление заключалось в том, чтобы просто добавить пустой firebase.json
файл
{
"react-native": {
}
}
При этом сборки продолжаются, как и ожидалось. Некоторые из них могут быть просто общими: «Получайте удовольствие от устранения неполадок в среде CI!» типов проблем, но RCT_NO_LAUNCH_PACKAGER
был тонким и особенно раздражающим.