debuggingexpowebstorm

Debugging a react native / expo app with webstorm


I can't debug my react native / expo app in WebStorm, but I can in Visual Studio Code. I have a react native app that I can successfully run using expo. I set up the configuration according to the info on this site:

https://blog.jetbrains.com/webstorm/2018/02/webstorm-2018-1-eap-181-3263/#debugging-expo

When I click "run" or "debug" and "Debug JS Remotely" is turned off, the bundler builds a JS bundle and the app starts on my devices. But once I turn on "Debug JS Remotely", the bundler only says:

Starting custom debugger by executing: : [my working directory] [my working directory again]

and never goes on to build the JS bundle. After a short while, a red screen appears on the device, and it says:

Unable to connect with remote debugger

Timeout while connecting to remote debugger

onFailure DevSupportManagerImpl.java:851

onFailure WebsocketJavaScriptExecutor.java:83

run WebsocketJavaScriptExecutor.java:142

handleCallback Handler.java:790

dispatchMessage Handler.java:99

...

The bundler doesn't say anything more than the message above. As soon as I turn off remote debugging, the the bundler starts building again and finishes with

"Building JavaScript bundle: finished in ...ms"

as usual, but the device, again, shows the red screen with aforementioned messages, or doesn't show anything but the regular white screen with a message at the bottom saying "Downlading JavaScript bundle 100,00%". I either have to stop and restart within WebStorm or I have to close the expo app and re-open it. Either way will make the app start again on my device.

This is my first time working with javascript, react native, expo, so I am not sure, but it should be possible to debug in WebStorm directly, right? As mentioned, in Visual Studio Code everything including debugging works fine, so I don't think it's anything in the code. Maybe someone here has an idea where the problem lies?

node -v: v11.6.0 react-native -v: react-native-cli: 2.0.1, react-native: 0.57.1

Any help will be greatly appreciated! Thanks in advance!


Solution

  • PROOF

    proof debugging is working

    HOWTO

    Looks like there's been an update to how you can setup Configurations since you tried.

    Try changing the Bundler host to 127.0.0.1 and try again.

    Change bundler host to 127.0.0.1

    I just setup Webstorm v2020.2 yesterday to debug my Expo application and it is working as expected.

    Webstorm v2020.2

    These instructions were all that I required: https://www.jetbrains.com/help/webstorm/react-native.html#ws_react_native_create_run_config

    1. On the main menu, go to Run | Edit Configurations, click icons.general.add.svg and select React Native from the list. The Run/Debug Configuration: React Native opens.

    2. Choose whether you want WebStorm to build and launch the application for you:

    3. Select the Build and launch checkbox if you are launching your application for the first time or if you have updated its native code since the last run.

    If your application uses Expo, clear the checkbox because this bundler takes care of the process itself.

    1. If you selected the Build and launch checkbox, choose the target platform, Android or iOS. Depending on your choice, WebStorm will run the bundler with react-native run-ios or with react-native run-android.

    2. Optionally, type the arguments to be passed to React Native, for example, specify the simulator type through the ‑‑simulator flag: ‑‑simulator="iPhone 4s".

    3. In the Bundler host field, specify the host where the React Native bundler runs, the default value is localhost.

    If you are using Expo, change the default bundler host to ensure successful connection with the debugger. This connection may fail because WebStorm by default uses localhost to start debugging while Expo expects 127.0.0.1 or an external IP address depending on what is selected in Connection field of the Metro bundler configuration. See Debugging a React Native application that uses Expo for details.

    1. In the Bundler port field, specify the port on which the React Native bundler runs, by default 8081 is chosen, learn more from the React Native official website.

    2. Choose the Node.js interpreter to use. This can be a local Node.js interpreter or a Node.js on Windows Subsystem for Linux.

    3. Specify the path to react-native-cli and the working directory of the application. Optionally, type the environment variables for react-native run-android or react-native run-ios.

    4. By default, WebStorm starts the React Native bundler automatically when you invoke the run/debug configuration. If you have already started the bundler from outside WebStorm, for example, from the command line, you can re-use it without stopping and restarting. Select your bundler in the Before Launch area and click Remove.