当应用程序在应用模拟器中运行时,如何用React Native调试他们的React代码?
Mac: Cmd+M
Windows和Linux: Ctrl+M
在模拟器中使用适当的热键。它会弹出Chrome浏览器,从那里你可以使用开发人员工具。
编辑:
现在在帮助文档中有链接。
默认情况下,我的ios模拟器没有捕捉到击键,这就是为什么cmd-D不能工作的原因。我必须使用模拟器的菜单打开键盘设置:
硬件>键盘>连接键盘
现在cmd-D启动chrome调试。
调试React原生应用程序
要调试react应用程序的javascript代码,请执行以下操作:
在iOS模拟器中运行应用程序。 按Command + D,打开一个网页http://localhost:8081/debugger-ui。(Chrome只现在)或使用摇手势 为更好的调试体验启用暂停捕获异常。 按命令+选项+ I打开Chrome开发工具,或通过视图->开发人员->开发人员工具打开。 现在您应该能够像往常一样进行调试了。
可选
为谷歌Chrome安装React开发人员工具扩展。当开发人员工具打开时,如果你选择React选项卡,这将允许你在视图层次结构中导航。
生活重新加载
要激活Live Reload,请执行以下操作:
在iOS模拟器中运行应用程序。 按Control + Command + Z键。 您现在将看到启用/禁用Live Reload,重新加载和启用/禁用调试选项。
除了其他答案。可以使用调试器语句调试react-native
例子:
debugger; //breaks execution
你的chrome开发工具必须打开这工作
我没有足够的声誉来评论之前的答案,这些答案都很好。:) 以下是我在开发react-native应用程序时调试的一些方法。
Live reloading react-native makes it super easy to see your changes with the ⌘ + R keys or even just enable live reload and watchman will "refresh" the simulator with the latest changes. If you get an error, you can get a clue from the line number from that red screen. A couple of undo will get you back to working state and start again. console.log('yeah, seriously.') I find myself prefer letting the program run and logging some informations than adding a debugger break point. (tough debugger is useful when trying to work with external packages/libraries and it comes with autocompletion, so you know what other methods you can utilise.) Enable Chrome Debugging with debugger; break point in your program.
这取决于您遇到的错误类型以及您对如何调试的偏好。对于大多数未定义的不是一个对象(评估'something.something'),方法1和2对我来说已经足够好了。
然而,处理由其他开发人员编写的外部库或包将需要更多的努力来调试,因此有一个像Chrome Debugging这样的好工具
有时它来自react-native平台本身,所以谷歌一下react-native问题肯定会有帮助。
希望这能帮助到一些人。
对于Android应用程序,如果你正在使用Genymotion,你可以通过按CMD + m来切换菜单,但你可能必须在菜单中启用它。
取消小部件 通过CMD + m单击debug在chrome中启用它
对我来说,在React-Native上调试的最好方法是使用“Reactotron”。
安装Reactotron,然后将这些添加到你的package.json:
"reactotron-apisauce": "^1.1.2",
"reactotron-react-native-under-37": "^1.1.2",
"reactotron-redux": "^1.1.2",
现在,只需要登录您的代码。 例如:console.tron.log(调试)
在Debian 8 (Jessie)上调试react-native 0.40.0可以通过在Chromium或Firebug中导航到http://localhost:8081/debugger-ui来完成,而应用程序正在android模拟器中运行。要访问应用程序内的开发人员菜单,在另一个终端窗口运行以下命令,如下所示:
Adb shell输入keyevent 82
试试这个程序:https://github.com/jhen0409/react-native-debugger
适用于:windows, osx和linux。
它支持:react native和redux
你还可以检查虚拟组件树,修改应用中反映的样式。
对于android应用程序。按Ctrl+M选择调试js远程,它将在chrome浏览器中打开一个url http://localhost:8081/debugger-ui的新窗口。你现在可以调试应用程序在chrome浏览器
在Windows中,使用android模拟器,你可以执行以下步骤:
模拟器运行后,应用程序在它上面,按下菜单按钮,然后选择“调试JS远程”或“调试在Chrome中”(这取决于模拟器使用)。你可以看到下一个图像作为参考:模拟器的步骤图像 一个新的Chrome标签将出现。你必须按Ctrl + J来显示开发人员工具,并开始跟踪调试步骤。请看这张图片作为参考
此外,您应该使用console.log()特性来使调试过程更具描述性。
非常简单,只有两个命令
For IOS $ react-native log-ios
For Android $ react-native log-android
在模拟器- react-native Run -ios中运行你的应用程序 按ctrl + d,然后点击Debug JS remote
网页应该在http://localhost:8081/debugger-ui打开,如果没有输入URL,在Chrome中进入这个链接 右键点击页面,点击检查,它应该打开chrome开发工具
转到顶部菜单中的源代码,在右侧的文件资源管理器中找到你的js类文件 您可以将断点放到视图中,并在其中调试代码,如图所示。
如果你正在使用Microsoft Visual Code,那么安装React Native Tools扩展。然后,只需单击所需的行号就可以添加断点。 按照以下步骤来安装和调试应用程序:
不要忘记启用调试JS远程模拟器,如果你使用它。
这真的取决于我在做什么。如果我正在更改UI或调试UI,我通常会打开实时和热重新加载并进行更改,然后获得即时反馈。如果它是更技术性的东西,我打开JS调试来查看应用程序的状态。然而,因为在react本机中重新加载是如此之快,如果状态太混乱,我只是控制台日志。
如果你在连接到笔记本电脑的真实设备上运行应用程序,你可以使用react-native log-ios或react-native log-android通过终端调试它(它也适用于模拟器)
您可以使用expo进行调试:https://expo.io/
Expo让web开发者能够构建真正的本地应用程序,可以在这两个平台上运行 iOS和Android只需要用JavaScript写一次。它是开放 源代码,免费并使用React Native。
这是一个很棒的工具,你可以在React Europe conf上观看这个研讨会:
https://www.youtube.com/watch?v=HygXkQDMSGU&t=6675s
我使用的一种技术非常类似于Android中的调试策略,即在所有.js文件中包含一个名为TAG的全局变量。
const TAG = 'APP_NAME+SCREEN_NAME';
然后在需要的地方,我将这样做:console.log(TAG + 'ACTION');
通过这种方式,我可以跟踪操作并查看日志语句的来源。
假设你想在Android模拟器上显示这个菜单
然后,尝试⌘+m在Mac上的Android模拟器上弹出这个开发设置对话框。 如果没有显示,那么转到AVD >(点击笔编辑模拟器配置)>高级设置>检查启用键盘输入框。 然后重试⌘+m。 如果它没有显示静止,那么去运行模拟器设置和发送键盘快捷键到组合框/下拉菜单,然后选择模拟器控件(默认)选项。
然后重试⌘+m。 我希望这对你有帮助,它对我有用。
其实很简单。只需按cmd D(如果在mac上),模拟器将创建一个弹出菜单。从那里只需点击“调试JS远程”或类似的东西。注意,在执行与某些包相关的代码时运行调试器会给人们带来问题。我有一个问题与反应本机映射和调试器。但这是固定的。不过,在大多数情况下,你应该没问题。
如果你想在Windows上使用android设备调试,只需打开命令提示符,然后输入(确保你的adb工作正常)
adb shell input keyevent 82
它将提示一个类似于图像的屏幕
然后选择
debug JS Remotely
它会自动打开一个新窗口。然后打开检查元件或按F12进入控制台。
要调试你的react原生应用程序,只需到以下地址:
localhost: 8081 / debugger-ui 在你的默认浏览器(chrome)和打开开发者工具来调试你的react原生应用程序
如果你在React原生应用程序开发中使用Atom编辑器中的Nuclide,那么你也可以使用“元素检查器”,这有助于观察开发阶段应用程序在设备上运行时的道具和状态值变化。
在这里了解更多
还有一个非常好的调试器Reactotron。 https://github.com/infinitered/reactotron
您不必在调试模式下查看一些数据值,而且有很多选项。
去看看真的很有用。;)
如果你正在使用Redux,我强烈推荐React Native Debugger。它包括Chrome开发工具,但也有Redux开发工具和React开发工具。
Redux Devtools:这允许你查看你的操作,并在它们之间来回切换。它还允许您查看redux存储,并具有自动区分每个操作的先前状态和更新状态的功能,因此当您在一系列操作中来回执行时,您可以看到这一点。
React Devtools:这允许你检查某个组件,即它的所有道具以及它的组件状态。如果你有一个组件状态的布尔值,它让你点击它来切换它,看看当它改变时你的应用程序是如何反应的。很棒的特性。
Chrome Devtools允许你看到你所有的控制台输出,使用断点,暂停调试器;等。标准调试功能。如果你右键单击Redux Devtools中列出的操作区域,并选择“允许网络检查”,你可以在Chrome Devtools的网络选项卡中检查你的API调用。
总之,把这些都放在一个地方真是太棒了!如果你不需要其中一个,你可以打开/关闭它。获得React本机调试器并享受生活。
在react-native的新版本中,您可以使用react-native log-android或react-native log-android查看应用程序在dev模式下的日志。
在React-Native中,调试要容易得多。
在IOS中使用调试
CMD + d ctrl + cmd + z(用于模拟器)
在android中调试
用触摸摇动设备(确保你的开发者选项是启用的)
对于Android: Ctrl + M(模拟器)或摇动手机(在设备中)显示菜单。
对于iOS: Cmd + D或摇晃手机显示菜单
确保你有铬。
在显示的菜单上选择Debug JS远程选项。
Chrome将在localhost:8081/debugger-ui自动打开。您也可以使用此链接手动转到调试器。
那里显示控制台,你可以看到日志被记录。
在终端adb logcat *:S ReactNative:V ReactNativeJS:V 在Android Studio中打开项目,打开logcat(底部面板上的按钮) 在终端react-native Run -android中运行
构建完成后,您应该在logcat中看到Android Studio中的详细日志。
我使用这个库来调试react-native项目
https://github.com/jhen0409/react-native-debugger 它包括
包括React -devtools-core中的React Inspector。 包括回家的 DevTools,用redux-devtools-extension做了相同的API。
或者你可以用
For IOS $ react-native log-ios
For Android $ react-native log-android
步骤1: 把调试器放在你想要停止脚本的地方,比如:
async saveItem(item, selectedValue) {
debugger
try {
await AsyncStorage.setItem(item, selectedValue);
}
catch (error) {
console.error('AsyncStorage error: ' + error.message);
}
}
这将在控制到达此代码块时暂停调试器。
步骤2: 在ios模拟器上按Cmd+D,在Android模拟器上按Cmd+M。 如果你有真正的设备,摇动设备打开开发菜单,如果你不想摇动设备,请关注这个博客
步骤3: 选择启用远程JS调试,这将打开Chrome
步骤4: 选择开发人员工具。
步骤5: 在源代码中编写调试器的任何地方,调试器都会在Sources选项卡中暂停。进入控制台,输入任何你想调试的参数(出现在代码块中),例如: 要移动到下一个调试器点,再次移动到Sources ->单击恢复脚本执行按钮(右下角蓝色按钮)
把调试器放在你想暂停脚本的任何地方。
享受调试! !
你也可以使用自定义库,如果你不想摇你的真实手机每2分钟
我创建了一个库,允许你在开发模式下使用3个手指触摸而不是摇晃来打开开发菜单
https://github.com/pie6k/react-native-dev-menu-on-touch
你只需要在里面包装你的应用程序:
从react-native-dev-menu-on-touch导入DevMenuOnTouch; //或:import {DevMenuOnTouch} from 'react-native-dev-menu-on-touch'
class YourRootApp extends Component {
render() {
return (
<DevMenuOnTouch>
<YourApp />
</DevMenuOnTouch>
);
}
}
当你必须在真正的设备上调试并且你有同事坐在你旁边时,它真的很有用。
你可以使用Safari来调试iOS版本的应用程序,而不必启用“远程调试JS”,只需遵循以下步骤:
1. Enable Develop menu in Safari: Preferences → Advanced → Select "Show Develop menu in menu bar"
2. Select your app's JSContext: Develop → {Your Simulator} → Automatically Show Web Inspector for JS JSContext
3. Safari's Web Inspector should open which has a Console and a Debugger
这是使用react本机调试器应用程序的另一种方式。
你可以使用下面的链接下载应用程序,这是一个非常好的应用程序,用于管理redux商店的源代码。
react-native-debugger
现在你可以直接使用下面的链接来帮助你。
chrome开发工具
使用可视化代码工作室调试react原生android和ios应用程序的最佳方法
步骤1。
安装React Native -完整的扩展包
步骤2。
使用USB调试模式连接移动设备或从android工作室打开模拟器。
步骤3。
在可视代码工作室的左侧菜单中单击调试选项 点击添加配置,选择React Native,然后创建launch.json
步骤4。
打开dev选项在手机上的长后按或摇手机和启用调试js远程
第5步。
最后一步点击播放按钮,选择调试android或调试ios
更多信息请参考这个链接
https://medium.com/@tunvirrahmantusher/android-debug-with-vscode-for-react-native-96f54d73462a
如果你想在默认情况下打开调试:
import { NativeModules } from 'react-native';
if (__DEV__) {
NativeModules.DevSettings.setIsDebuggingRemotely(true)
}
要让它在Android上工作:
npm install --save react-native-devsettings-android
react-native link react-native-devsettings-android
参考:启动一个React Native应用程序,默认启用“调试JS远程”
如果你想了解检查网络流量和理解原生UI视图层次结构。通过其可扩展的插件API, React Native Update版本为调试移动应用程序提供了开发人员工具。
Flipper是一个调试移动应用程序的很棒的开发工具。该工具随react-native 62一起发布
首先在你的ios模拟器中,如果你按[command + D]键,然后你可以看到这个屏幕。
然后单击远程调试JS按钮。
之后你可能会看到这样的React本机调试器页面。
然后打开你的检查器[f12],去控制台选项卡调试它!:)
推荐文章
- 更改UITextField和UITextView光标/插入符颜色
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 在Android中将字符串转换为Uri
- 'Project Name'是通过优化编译的——步进可能会表现得很奇怪;变量可能不可用
- 如何在NestedScrollView内使用RecyclerView ?
- 如何设置回退按钮文本在Swift
- 移动到另一个EditText时,软键盘下一步点击Android
- Android应用中的GridView VS GridLayout
- Activity和FragmentActivity的区别
- 右对齐文本在android TextView
- 模拟器慢动作动画现在打开了吗?
- 如何设置断点在内联Javascript在谷歌Chrome?
- 如何为TableView创建NSIndexPath
- 权限拒绝:start前台需要android.permission.FOREGROUND_SERVICE