You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Summary:
This is a followup to facebook#8010. Troubleshooting has been updated to list only those issues that may affect a user that is setting up their environment. Any issues related to day to day use have been moved or merged into a more relevant doc.
Closesfacebook#8254
Reviewed By: caabernathy
Differential Revision: D3459018
Pulled By: JoelMarcey
fbshipit-source-id: dd76097af34bd33dda376fab39fb0f71061ef3e4
Copy file name to clipboardExpand all lines: docs/Debugging.md
+28-20Lines changed: 28 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,48 +7,54 @@ permalink: docs/debugging.html
7
7
next: testing
8
8
---
9
9
10
-
## In-app Errors and Warnings
11
-
12
-
Errors and warnings are displayed inside your app in development builds.
13
-
14
-
### Errors
15
-
16
-
In-app errors are displayed in a full screen alert with a red background inside your app. This screen is known as a RedBox. You can use `console.error()` to manually trigger one.
17
-
18
-
### Warnings
19
-
20
-
Warnings will be displayed on screen with a yellow background. These alerts are known as YellowBoxes. Click on the alerts to show more information or to dismiss them.
21
-
22
-
As with a RedBox, you can use `console.warn()` to trigger a YellowBox.
23
-
24
-
YellowBoxes can be disabled during development by using `console.disableYellowBox = true;`. Specific warnings can be ignored programmatically by setting an array of prefixes that should be ignored: `console.ignoredYellowBox = ['Warning: ...'];`
25
-
26
-
> RedBoxes and YellowBoxes are automatically disabled in release (production) builds.
27
-
28
10
## Accessing the In-App Developer Menu
29
11
30
-
You can access the developer menu by shaking your device. You can also use the `Command⌘ + D` keyboard shortcut when your app is running in the iPhone Simulator, or `Command⌘ + M` when running in an Android emulator.
12
+
You can access the developer menu by shaking your device or by selecting "Shake Gesture" inside the Hardware menu in the iOS Simulator. You can also use the `Command⌘ + D` keyboard shortcut when your app is running in the iPhone Simulator, or `Command⌘ + M` when running in an Android emulator.
13
+
14
+

31
15
32
16
> The Developer Menu is disabled in release (production) builds.
33
17
34
18
## Reloading JavaScript
35
19
36
20
Selecting `Reload` from the Developer Menu will reload the JavaScript that powers your application. You can also press `Command⌘ + R` in the iOS Simulator, or press `R` twice on Android emulators.
37
21
22
+
> If you are using a Dvorak/Colemak layout, use the `Command⌘ + P` keyboard shortcut to reload the simulator.
23
+
38
24
You will need to rebuild your app for changes to take effect in certain situations:
39
25
40
26
* You have added new resources to your native app's bundle, such as an image in `Images.xcassets` on iOS or in `res/drawable` folder on Android.
41
27
* You have modified native code (Objective-C/Swift on iOS or Java/C++ on Android).
42
28
29
+
> If the `Command⌘ + R` keyboard shortcut does not seem to reload the iOS Simulator, go to the Hardware menu, select Keyboard, and make sure that "Connect Hardware Keyboard" is checked.
30
+
43
31
### Automatic reloading
44
32
45
33
You may enable Live Reload to automatically trigger a reload whenever your JavaScript code changes.
46
34
47
35
Live Reload is available on iOS via the Developer Menu. On Android, select "Dev Settings" from the Developer Menu and enable "Auto reload on JS change".
48
36
37
+
## In-app Errors and Warnings
38
+
39
+
Errors and warnings are displayed inside your app in development builds.
40
+
41
+
### Errors
42
+
43
+
In-app errors are displayed in a full screen alert with a red background inside your app. This screen is known as a RedBox. You can use `console.error()` to manually trigger one.
44
+
45
+
### Warnings
46
+
47
+
Warnings will be displayed on screen with a yellow background. These alerts are known as YellowBoxes. Click on the alerts to show more information or to dismiss them.
48
+
49
+
As with a RedBox, you can use `console.warn()` to trigger a YellowBox.
50
+
51
+
YellowBoxes can be disabled during development by using `console.disableYellowBox = true;`. Specific warnings can be ignored programmatically by setting an array of prefixes that should be ignored: `console.ignoredYellowBox = ['Warning: ...'];`
52
+
53
+
> RedBoxes and YellowBoxes are automatically disabled in release (production) builds.
54
+
49
55
## Accessing logs
50
56
51
-
To view detailed logs on iOS, open your app in Xcode, then Build and Run your app on a device or the iPhone Simulator. The console should appear automatically after the app launches.
57
+
To view detailed logs on iOS, open your app in Xcode, then Build and Run your app on a device or the iPhone Simulator. The console should appear automatically after the app launches. If your app is failing to build, check the Issues Navigator in Xcode.
52
58
53
59
Run `adb logcat *:S ReactNative:V ReactNativeJS:V` in a terminal to display the logs for an Android app running on a device or an emulator.
54
60
@@ -68,6 +74,8 @@ On Android 5.0+ devices connected via USB, you can use the [`adb` command line t
68
74
69
75
Alternatively, select `Dev Settings` from the Developer Menu, then update the `Debug server host for device` setting to match the IP address of your computer.
70
76
77
+
> If you run into any issues, it may be possible that one of your Chrome extensions is interacting in unexpected ways with the debugger. Try disabling all of your extensions and re-enabling them one-by-one until you find the problematic extension.
78
+
71
79
### Debugging using a custom JavaScript debugger
72
80
73
81
To use a custom JavaScript debugger in place of Chrome Developer Tools, set the `REACT_DEBUGGER` environment variable to a command that will start your custom debugger. You can then select `Debug JS Remotely` from the Developer Menu to start debugging.
Copy file name to clipboardExpand all lines: docs/QuickStart-GettingStarted.md
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -282,6 +282,8 @@ Congratulations! You've successfully run and modified your first React Native ap
282
282
283
283
## Common Followups
284
284
285
+
- Learn how to access the Developer Menu, reload your JavaScript, access logs, and more in the [Debugging guide](docs/debugging.html#content).
286
+
285
287
<blockclass="mac ios" />
286
288
287
289
- If you want to run on a physical device, see the [Running on iOS Device page](docs/running-on-device-ios.html#content).
@@ -292,15 +294,17 @@ Congratulations! You've successfully run and modified your first React Native ap
292
294
293
295
<blockclass="mac ios android" />
294
296
295
-
- If you run into any issues getting started, see the [Troubleshooting](docs/troubleshooting.html#content)and [Debugging](docs/debugging.html#content) pages.
297
+
- If you run into any issues getting started, see the [Troubleshooting](docs/troubleshooting.html#content)page.
296
298
297
299
<blockclass="windows linux android" />
298
300
299
301
## Common Followups
300
302
303
+
- Learn how to access the Developer Menu, reload your JavaScript, access logs, and more in the [Debugging guide](docs/debugging.html#content).
304
+
301
305
- If you want to run on a physical device, see the [Running on Android Device page](docs/running-on-device-android.html#content).
302
306
303
-
- If you run into any issues getting started, see the [Troubleshooting](docs/troubleshooting.html#content)and [Debugging](docs/debugging.html#content) pages.
307
+
- If you run into any issues getting started, see the [Troubleshooting](docs/troubleshooting.html#content)page.
Copy file name to clipboardExpand all lines: docs/Troubleshooting.md
+26-59Lines changed: 26 additions & 59 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,69 +6,51 @@ category: Quick Start
6
6
permalink: docs/troubleshooting.html
7
7
---
8
8
9
-
## Cmd-R does not reload the simulator
10
-
Enable iOS simulator's "Connect hardware keyboard" from menu Hardware > Keyboard menu.
9
+
These are some common issues you may run into while setting up React Native. If you encounter something that is not listed here, try [searching for the issue in GitHub](https://github.com/facebook/react-native/issues/).
The React Native packager runs on port 8081. If another process is already using that port (such as McAfee Antivirus on Windows), you can either terminate that process, or change the port that the packager uses.
14
14
15
-
If you are using a non-QWERTY/AZERTY keyboard layout you can use the `Hardware > Shake Gesture` to bring up the dev menu and click "Refresh". Alternatively, you can hit `Cmd-P`on Dvorak/Colemak layouts to reload the simulator.
15
+
#### Terminating a process on port 8081
16
16
17
-
You can use Cmd+M on Android to bring up the dev menu.
17
+
Run the following command on a Mac to find the id for the process that is listening on port 8081:
You can configure the packager to use a port other than 8081 by using the `port` parameter:
45
28
29
+
`$ react-native start --port=8088`
46
30
47
-
## Watchman took too long to load
48
-
Permission settings prevent Watchman from loading. A recent update solves this, get a HEAD install of Watchman if you are experiencing this error.
31
+
You will also need to update your applications to load the JavaScript bundle from the new port.
32
+
33
+
To change the port used by an iOS application, edit the `AppDelegate.m` file in the `ios` folder. Scroll down to the line where the bundle location is defined, and replace 8081 with the new port.
If you encounter an error such as "npm WARN locking Error: EACCES" while using the React Native CLI, try running the following:
56
42
57
-
If in the `react-native init <project>` phase you saw npm fail with "npm WARN locking Error: EACCES" then try the following:
58
43
```
59
44
sudo chown -R $USER ~/.npm
60
45
sudo chown -R $USER /usr/local/lib/node_modules
61
46
```
62
47
63
-
## Debugging in Chrome hangs and/or does not work well
64
-
It is possible that one of your Chrome extensions is interacting in unexpected ways with the debugger. If you are having this issue, try disabling all of your extensions and re-enabling them one-by-one until you find the problematic extension.
48
+
### Missing libraries for React
65
49
66
-
## Xcode Build Failures
50
+
If you added React Native manually to your project, make sure you have included all the relevant dependencies that you are using, like `RCTText.xcodeproj`, `RCTImage.xcodeproj`. Next, the binaries built by these dependencies have to be linked to your app binary. Use the `Linked Frameworks and Binaries` section in the Xcode project settings. More detailed steps are here: [Linking Libraries](docs/linking-libraries-ios.html#content).
67
51
68
-
To see the exact error that is causing your build to fail, go into the Issues Navigator in the left sidebar.
69
-
70
-
##### React libraries missing
71
52
If you are using CocoaPods, verify that you have added React along with the subspecs to the `Podfile`. For example, if you were using the `<Text />`, `<Image />` and `fetch()` APIs, you would need to add these in your `Podfile`:
53
+
72
54
```
73
55
pod 'React', :path => '../node_modules/react-native', :subspecs => [
Next, make sure you have run `pod install` and that a `Pods/` directory has been created in your project with React installed. CocoaPods will instruct you to use the generated `.xcworkspace` file henceforth to be able to use these installed dependencies.
81
62
82
-
If you are adding React manually, make sure you have included all the relevant dependencies, like `RCTText.xcodeproj`, `RCTImage.xcodeproj` depending on the ones you are using. Next, the binaries built by these dependencies have to be linked to your app binary. Use the `Linked Frameworks and Binaries` section in the Xcode project settings. More detailed steps are here: [Linking Libraries](docs/linking-libraries-ios.html#content).
63
+
Next, make sure you have run `pod install` and that a `Pods/` directory has been created in your project with React installed. CocoaPods will instruct you to use the generated `.xcworkspace` file henceforth to be able to use these installed dependencies.
83
64
84
-
#####Argument list too long: recursive header expansion failed
65
+
#### Argument list too long: recursive header expansion failed
85
66
86
67
In the project's build settings, `User Search Header Paths` and `Header Search Paths` are two configs that specify where Xcode should look for `#import` header files specified in the code. For Pods, CocoaPods uses a default array of specific folders to look in. Verify that this particular config is not overwritten, and that none of the folders configured are too large. If one of the folders is a large folder, Xcode will attempt to recursively search the entire directory and throw above error at some point.
87
68
88
69
To revert the `User Search Header Paths` and `Header Search Paths` build settings to their defaults set by CocoaPods - select the entry in the Build Settings panel, and hit delete. It will remove the custom override and return to the CocoaPod defaults.
89
70
90
-
## Unable to connect to development server
91
-
92
-
##### iOS
93
-
Ensure that you are on the same WiFi network as your computer. If you're using a cell data plan, your phone can't access your computer's local IP address.
94
-
95
-
##### Android
96
-
You need to run `adb reverse tcp:8081 tcp:8081` to forward requests from the device to your computer. This works only on Android 5.0 and newer.
71
+
### No transports available
97
72
98
-
## Module that uses `WebSocket` (such as Firebase) throws an exception
73
+
React Native implements a polyfill for WebSockets. These [polyfills](https://github.com/facebook/react-native/blob/master/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js) are initialized as part of the react-native module that you include in your application through `import React from 'react-native'`. If you load another module that requires WebSockets, such as [Firebase](https://github.com/facebook/react-native/issues/3645), be sure to load/require it after react-native:
99
74
100
-
React Native implements a polyfill for WebSockets. These polyfills are initialized as part of the react-native module that you include in your application through `import React from 'react-native'`. If you load another module that requires WebSockets, be sure to load/require it after react-native.
101
-
102
-
So:
103
75
```
104
76
import React from 'react-native';
105
77
import Firebase from 'firebase';
106
78
```
107
79
108
-
Requiring firebase *before* react-native will result in a 'No transports available' redbox.
109
-
110
-
Discovered thanks to issue [#3645](https://github.com/facebook/react-native/issues/3645). If you're curious, the polyfills are set up in [InitializeJavaScriptAppEngine.js](https://github.com/facebook/react-native/blob/master/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js).
111
-
112
-
113
80
## Shell Command Unresponsive Exception
114
81
115
-
If you encounter:
82
+
If you encounter a ShellCommandUnresponsiveException exception such as:
Try downgrading your Gradle version to 1.2.3 in `<project-name>/android/build.gradle`(https://github.com/facebook/react-native/issues/2720)
89
+
Try [downgrading your Gradle version to 1.2.3](https://github.com/facebook/react-native/issues/2720) in `android/build.gradle`.
0 commit comments