#ios #react-native #react-native-ios
Вопрос:
Я использую rdp-машину в macincloud. я выполняю команды ниже и не справляюсь с «Не удалось подключиться к серверу разработки».
react-native run-ios
ошибка:
[![enter image description here][1]][1]
Could not connect to development server.
Ensure the following:
- Node server is running and available on the same network - run 'npm start' from react-native root
- Node server URL is correctly set in AppDelegate
- WiFi is enabled and connected to the same network as the Node Server
URL: http://103.228.153.185:8081/index.bundle?platform=iosamp;dev=trueamp;minify=falseamp;modulesOnly=falseamp;runModule=trueamp;app=org.reactjs.native.example.Appui
RCTFatal
__28-[RCTCxxBridge handleError:]_block_invoke
_dispatch_call_block_and_release
_dispatch_client_callout
_dispatch_main_queue_callback_4CF
__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
__CFRunLoopRun
CFRunLoopRunSpecific
GSEventRunModal
-[UIApplication _run]
UIApplicationMain
main
start
0x0
кроме того, хотя отладчик подключается http://103.228.153.185:8081/debugger-ui/
но в консоли произошел сбой с прикреплением скриншота
я также добавил URL-адрес в Appdelegate.m
return [NSURL URLWithString:@"http://103.228.153.185:8081/index.bundle?platform=iosamp;dev=trueamp;minify=falseamp;modulesOnly=falseamp;runModule=trueamp;app=org.reactjs.native.example.AppUI"];
я удалил node_module, очистил временный каталог,запустил сервер узлов с чистым кэшем, установил npm, похоже, ничего не работает.
другие характеристики окружающей среды:
node : 16.6.0
npm version
{
npm: '7.19.1',
node: '16.6.0',
v8: '9.2.230.21-node.18',
uv: '1.41.0',
zlib: '1.2.11',
brotli: '1.0.9',
ares: '1.17.1',
modules: '93',
nghttp2: '1.42.0',
napi: '8',
llhttp: '6.0.2',
openssl: '1.1.1k quic',
cldr: '39.0',
icu: '69.1',
tz: '2021a',
unicode: '13.0',
ngtcp2: '0.1.0-DEV',
nghttp3: '0.1.0-DEV'
}
Я думаю, что это проблема окружающей среды, любая помощь будет очень признательна
Примечание: приложение отлично работает в Android
Ответ №1:
RCA: Это происходит потому, что react-native нуждается в watchman для запуска в ios, в то же время мой пользователь в macincloud.com не имел привилегий доступа к сторожу, установленному в машине. Я видел отсутствие привилегий доступа в журнале запуска «npm start».
Welcome to Metro!
Fast - Scalable - Integrated
To reload the app press "r"
To open developer menu press "d"
2021-09-17T19:36:21,739: [] while computing sockname: failed to create /usr/local/var/run/watchman/user-state: Permission denied
Watchman: watchman --no-pretty get-sockname returned with exit code=1, signal=null, stderr= 2021-09-17T19:36:21,739: [] while computing sockname: failed to create /usr/local/var/run/watchman/user-state: Permission denied
Решение:
Из ошибки было очевидно ,что watchman установлен, но имя пользователя не может получить к нему доступ, поэтому я скопировал папку watchman в место, к которому я могу получить доступ, и указал тот же путь в bashrc. Что касается того, как я решил, какой путь необходим для перехода в bashrc. Я проверил шаг установки сторожа на https://facebook.github.io/watchman/docs/install.html,
если вы видите в разделе установки mac, что они копируют только bin и lib, как показано ниже, обратите внимание:react-native не беспокоится о точном местоположении watchman, все, что ему нужно, — это доступ к watchman.
$ sudo cp bin/* /usr/local/bin
$ sudo cp lib/* /usr/local/lib
Точные шаги, которые необходимо предпринять, чтобы устранить эту проблему в macincloud.com или на любой машине, где вы не являетесь пользователем root и не имеете прав доступа
cd /Users/{place-your-username}/Documents
mkdir watchman
cd /usr/local/bin/
ls -lart|grep watchman
lrwxr-XR-х 1 темп админ 45 17 сентября 23:04 сторож -> ../погреб/сторож/2021.09.06.00/ОГРН/сторож lrwxr-XR-х 1 темп админ сентября 50 17 23:04 сторож-диаг -> ../погреб/сторож/2021.09.06.00/ОГРН/сторож-диаг lrwxr-XR-х 1 темп админ 50 17 23 сентября:04 сторож-мейк -> ../погреб/сторож/2021.09.06.00/ОГРН/сторож-сделать lrwxr-XR-х 1 темп админ 68 17 сентября 23:04 сторож-повторить-подписка -> ../погреб/сторож/2021.09.06.00/ОГРН/сторож-повторить-подписка lrwxr-XR-х 1 темп админ сентября 50 17 23:04 сторож-подожди -> ../Подвал/сторож/2021.09.06.00/бункер/сторож-подождите lrwxr-xr-x 1 временный администратор 48 сентября 17 23:04 Сторож -> ../Подвал/сторож/2021.09.06.00/бункер/сторож
Примечание: сверху вы видите, что ватман присутствует в машине, для приведенной ниже команды измените номер версии в соответствии с тем, что вы получите в приведенном выше ответе
cp -r ../Cellar/watchman/2021.09.06.00/ /Users/{place-your-username}/Documents/watchman
echo $PATH
- bashrc может вообще не присутствовать,и вы должны создать его в первый раз, все в порядке
vi ~/.bashrc PATH:/Users/{place-your-username}/Documents/watchman/bin:/Users/{place-your-username}/Documents/watchman/lib:{add-ответ сверху функции здесь или просто добавьте $PATH}
source ~/.bashrc
Теперь вы можете запустить свою машину реакции
Примечание: Это должно работать на всех компьютерах, где вы хотите получить доступ к определенному приложению, к которому вы хотите получить доступ, но из-за привилегий вы заблокированы