ReactNative踩坑之配置调试端口的解决方法

发布时间 - 2026-01-11 02:33:35    点击率:

本文介绍了ReactNative踩坑之配置调试端口的解决方法,分享大家,顺便也给自己留个笔记

问题是这样的,由于公司的机器安装了安全软件,http://localhost:8081被占用了。(windows上配置环境真不易,最后一步还是被公司环境坑了)

所以导致按照教程配置完环境最后到真机上还是刷不出来界面

那么我们就这么放弃了吗?当然不,不然就白忙活了

分析问题:端口被占用,那我们换一个端口不就行啦,于是乎各种查阅资料,发现PackageManager(包管理服务)在启动的时候是可以配置端口的.如下命令

react-native start --port 18081

这样Launch起来的包管理服务就在端口18081上了,在Chrome上敲localhost:18081神奇的显示了ReactNative的相关界面,说明正常了。

接着在真机上需要敲这个命令

adb reverse tcp:18081 tcp:18081

这个命令会将手机的调试端口设置成与包管理服务一致的端口18081

然后我在真机上跑了一遍程序,结果还是显示不出来。莫名的伤感有没有

在各种找不到资料的情况下,开始翻看ReactAndroid源码,经过分析最后找到这么一段关键的代码

public String getDebugServerHost() {
// Check host setting first. If empty try to detect emulator type and use default
// hostname for those
String hostFromSettings = mPreferences.getString(PREFS_DEBUG_SERVER_HOST_KEY, null);

if (!TextUtils.isEmpty(hostFromSettings)) {
 return Assertions.assertNotNull(hostFromSettings);
}

String host = AndroidInfoHelpers.getServerHost();

if (host.equals(AndroidInfoHelpers.DEVICE_LOCALHOST)) {
 FLog.w(
  TAG,
  "You seem to be running on device. Run 'adb reverse tcp:8081 tcp:8081' " +
   "to forward the debug server's port to the device.");
}

return host;
}

好家伙,原来是从SharedPreference中先读了PREFS_DEBUG_SERVER_HOST_KEY这个值,如果为空则用AndroidInfoHelpers.getServerHost()这个函数返回值(也就是loacalhost:8081)

那么解决办法就浮出水面了,只需要在Application初始化的时候讲这个值设置成我们自定义的就好了,类似

SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext);
mPreferences.put("debug_http_host", "localhost:18081");

这段代码最好写在SoLoader.init(this, /* native exopackage */ false);调用之前,因为在windows上remote debug js的时候如果不写在前面似乎调试不起效果(调试的地址端口也变成了18081了)

写在最后的话,在找不到资料解决问题的时候,可以开始撸起袖子看代码了!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ReactNative配置调试端口  # ReactNative调试端口  # React引入antd-mobile+postcss搭建移动端  # react配置webpack-bundle-analyzer项目优化踩坑记录  # antd踩坑之javascriptEnabled配置方式  # 机上  # 找不到  # 写在  # 设置成  # 我在  # 就在  # 不出来  # 上了  # 是这样  # 只需  # 是从  # 要在  # 一遍  # 这段  # 就行  # 用了  # 跑了  # 自定义  # 解决问题  # 在前面 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  网站制作报价单模板图片,小松挖机官方网站报价?  Android自定义控件实现温度旋转按钮效果  javascript中的try catch异常捕获机制用法分析  Thinkphp 中 distinct 的用法解析  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  高防服务器租用指南:配置选择与快速部署攻略  iOS发送验证码倒计时应用  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  香港网站服务器数量如何影响SEO优化效果?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  如何在云虚拟主机上快速搭建个人网站?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Laravel如何与Inertia.js和Vue/React构建现代单页应用  在Oracle关闭情况下如何修改spfile的参数  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  如何快速重置建站主机并恢复默认配置?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何用PHP快速搭建高效网站?分步指南  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  浅述节点的创建及常见功能的实现  js实现点击每个li节点,都弹出其文本值及修改  Python图片处理进阶教程_Pillow滤镜与图像增强  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  免费网站制作appp,免费制作app哪个平台好?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Laravel怎么使用artisan命令缓存配置和视图  如何用wdcp快速搭建高效网站?  怎么用AI帮你为初创公司进行市场定位分析?  Laravel如何实现数据库事务?(DB Facade示例)  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  详解CentOS6.5 安装 MySQL5.1.71的方法  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  如何自定义建站之星模板颜色并下载新样式?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何在阿里云部署织梦网站?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)