Как устранить неполадки с зависанием в Приступая к работе с React Native?
Я использую инструкции React Native Getting Started. Я использую MacBook Pro 2010 с MacOS Sierra 10.12.6. На компьютере установлен Node.js v8.4.0.
Я новичок в React Native, а также в React и в Node, так что я могу упустить что-то простое. У меня React работает на том же компьютере. Я следовал инструкциям на странице выше, надеясь увидеть npm start
Запустите сервер разработки и распечатайте QR-код на терминале, как сказано в инструкции.
При первой попытке начать работу я получил несколько сообщений об ошибках, которые вы можете найти ниже. На основании этих сообщений я установил сторож и попытался npm start
снова. В то время приложение запускало сервер. Я не увидел QR-код, но через несколько секунд появились сообщения об ошибках, а затем ничего.
Вот как выглядел сеанс оболочки. Некоторые части были длинными (сотни строк), и я их пропустил. Я включил все ошибки и предупреждения, которые я нашел.
bash-3.2$ create-react-native-app AwesomeProject # verbatim from the getting-started page
Creating a new React Native app in /Users/dvincent/Desktop/react-native-test/AwesomeProject.
Using package manager as npm with npm interface.
Installing packages. This might take a couple minutes.
Installing react-native-scripts...
[?25hAwesomeProject@0.1.0 /Users/dvincent/Desktop/react-native-test/AwesomeProject
`-- react-native-scripts@1.3.0
+-- @expo/bunyan@1.8.10
| +-- moment@2.18.1
Здесь я опускаю сотни строк, которые не кажутся важными. Это кажется важным:
+-- uuid@3.1.0 deduped
+-- xmldom@0.1.27
`-- yesno@0.0.1
npm WARN react-redux@5.0.6 requires a peer of react@^0.14.0 || ^15.0.0-0 || ^16.0.0-0 but none was installed.
Installing dependencies using npm...
[?25hnpm WARN deprecated connect@2.30.2: connect 2.x series is deprecated
[?25h
> fsevents@1.1.2 install /Users/dvincent/Desktop/react-native-test/AwesomeProject/node_modules/fsevents
> node install
[fsevents] Success: "/Users/dvincent/Desktop/react-native-test/AwesomeProject/node_modules/fsevents/lib/binding/Release/node-v57-darwin-x64/fse.node" already installed
Pass --update-binary to reinstall or --build-from-source to recompile
[?25hAwesomeProject@0.1.0 /Users/dvincent/Desktop/react-native-test/AwesomeProject
+-- expo@20.1.1
| +-- @expo/vector-icons@5.2.0
| | `-- react-native-vector-icons@4.1.1
| | `-- yargs@6.6.0 deduped
| +-- babel-preset-expo@3.0.0
| | +-- babel-plugin-module-resolver@2.7.1
| | | +-- find-babel-config@1.1.0
Здесь я опускаю больше строк, прежде чем достигнуть некоторых предупреждений и увидеть успех! сообщение, как и ожидалось.
| +-- y18n@3.2.1
| `-- yargs-parser@4.2.1
| `-- camelcase@3.0.0 deduped
`-- react-test-renderer@16.0.0-alpha.12
npm WARN react-native-gesture-handler@1.0.0-alpha.17 requires a peer of react@>= 16.0.0 but none was installed.
npm WARN react-native-branch@2.0.0-beta.3 requires a peer of react@>=15.4.0 but none was installed.
npm WARN lottie-react-native@1.1.1 requires a peer of react@>=15.3.1 but none was installed.
Success! Created AwesomeProject at /Users/dvincent/Desktop/react-native-test/AwesomeProject
Inside that directory, you can run several commands:
npm start
Starts the development server so you can open your app in the Expo
app on your phone.
и заканчивая следующим.
We suggest that you begin by typing:
cd AwesomeProject
npm start
Happy hacking!
Итак, я поступил так:
bash-3.2$ cd AwesomeProject/
bash-3.2$ npm start
> AwesomeProject@0.1.0 start /Users/dvincent/Desktop/react-native-test/AwesomeProject
> react-native-scripts start
1:59:58 PM: Unable to start server
See https://git.io/v5vcn for more information, either install watchman or run the following snippet:
sudo sysctl -w kern.maxfiles=5242880
sudo sysctl -w kern.maxfilesperproc=524288
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! AwesomeProject@0.1.0 start: `react-native-scripts start`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the AwesomeProject@0.1.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/dvincent/.npm/_logs/2017-09-01T03_59_58_661Z-debug.log
Я пока отложил предложение ядра и вместо этого установил сторож.
bash-3.2$ npm install watchman
[?25hAwesomeProject@0.1.0 /Users/dvincent/Desktop/react-native-test/AwesomeProject
`-- watchman@0.1.8
+-- cli@1.0.1
| +-- exit@0.1.2
| `-- glob@7.1.2
`-- eco@1.1.0-rc-3
+-- coffee-script@1.12.7
`-- strscan@1.0.1
npm WARN lottie-react-native@1.1.1 requires a peer of react@>=15.3.1 but none was installed.
npm WARN react-native-branch@2.0.0-beta.3 requires a peer of react@>=15.4.0 but none was installed.
npm WARN react-native-gesture-handler@1.0.0-alpha.17 requires a peer of react@>= 16.0.0 but none was installed.
Затем я попытался запустить сервер снова.
bash-3.2$ npm start
> AwesomeProject@0.1.0 start /Users/dvincent/Desktop/react-native-test/AwesomeProject
> react-native-scripts start
2:29:06 PM: Starting packager...
***ERROR STARTING PACKAGER***
Starting React Native packager...
Scanning 767 folders for symlinks in /Users/dvincent/Desktop/react-native-test/AwesomeProject/node_modules (21ms)
Loading dependency graph.
Running packager on port 19001.
2017-09-01 14:29 node[22151] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
***ERROR STARTING PACKAGER***
2017-09-01 14:29 node[22151] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
***ERROR STARTING PACKAGER***
2017-09-01 14:29 node[22151] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
В этот момент я перестал ждать и захватил стенограмму оболочки, чтобы начать работу над этим вопросом. Я оставил это во время написания, более 40 минут, без дальнейшего вывода.
1 ответ
Это похоже на известную проблему при установке сторожа с помощью npm. Это можно исправить, удалив сторож, установленный с помощью npm, и установив его с помощью homebrew.
# Remove any existing binaries
rm -rf /usr/local/var/run/watchman/
# Remove any npm globally installed instances
npm uninstall watchman
# Nuke the last brew installed version
brew uninstall watchman
# Brew install and build latest
brew install watchman
Для более подробной информации смотрите эту проблему.