教你轻松修改React Native的端口(如何同时运行多个React Native、8081端口占用问题)

当我们运行一个React Native项目的时候,React Native会启动一个默认端口号为8081的本地服务,该8081的服务就是React Native项目的一个本地服务器,用于提供JSBundle包和一些静态资源。这一切都是React Native帮开发者配置好的,一切都是那么简便,但如果出现如下几种情况,那么你需要认真阅读本文了:

  1. 8081端口被其他程序占用(比如杀毒软件),导致React Native无法正常启动8081的服务;
  2. 如果你想同时运行多个React Native项目;
  3. 如果你好奇React Native的默认8081是如何设置的,想修改它;

修改React Native监听端口

启动React Native服务默认会监听8081端口,那么如何修改这个默认的端口呢?接下来就跟着我一步一步的来修改React Native服务默认监听的端口吧!

第一步:修改Server端口

所谓Server端口,也就是我们通过npm start或者react-native run-xxx命令启动的React Native本地服务器的端口号,如图:

临时修改Server端口

查看最新的server.js的源码,不难发现一下一段代码:

...
command: '--port [number]',
default: 8081,
parse: (val: string) => Number(val),
...

从上述代码中可以看出,我们在启动react native服务的时候可以为它指定一个端口号:

react-native start --port=8082

提示:上述代码,是2017年8月1号提交的一个pull request,所以说在2017年8月1之前的React Native版本是没有这个功能的。

永久修改Server端口

要永久修改这个默认端口号,我们需要修改server.js文件,server.js所在位置,在:

你的项目名称/node_modules/react-native/local-cli/server/server.js

找到这个文件,打开它,然后将默认的8081端口修改为你想要的端口号即可:

修改好之后,需要验证一下有么有生效,怎么验证呢,方法很简单,在项目根目录下运行npm start即可:

从上图可以看出,这里我们已经将react-native的默认端口修改为了8082。

第二步:修改iOS项目的端口号

在修改了React Native 服务的端口号之后,我们要需改iOS项目的端口号让它从新端口获取jsbundle,否则的话会出现No bundle URL present错误。

提示:如果你的React Native项目没有iOS模块可以忽略此步骤;

  • 通过XCode打开React Native项目中的iOS项目;
  • 修改以下文件的端口号:
    • RCTWebSocketExecutor.m
    • RCTBridgeDelegate.h
    • RCTBundleURLProvider.m
    • RCTInspectorDevServerHelper.mm
    • RCTPackagerConnectionBridgeConfig.m

为了方便查找这些文件并定位到端口号,你可以借助XCode的Show the Find navigator功能来查找文本8081

接下就可以通过react-native run-ios来运行iOS项目并从新的端口读取jsbundle了。

第三步:修改Android项目的端口号

在修改了React Native 服务的端口号之后,我们要需改Android项目的端口号让它从新端口获取jsbundle,否则的话会出现No bundle URL present错误。

提示:如果你的React Native项目没有Android模块可以忽略此步骤;

  • 打开调试工具(Dev Settings),可以通过(command+M) 完成;
  • 点击 Debug server host & port for device,添加localhost:xxx其中xxx为新的端口地址;
  • 重新reload一下,就可以从新的端口加载jsbundle了。

另外,如果你的项目是源码级依赖React Native的话,也可以通过修改AndroidInfoHelpers.java文件来完成对Android项目的端口的修改。


public class AndroidInfoHelpers {
  public static final String EMULATOR_LOCALHOST = "10.0.2.2";
  public static final String GENYMOTION_LOCALHOST = "10.0.3.2";
  public static final String DEVICE_LOCALHOST = "localhost";

  private static final int DEBUG_SERVER_HOST_PORT = 8081;
  private static final int INSPECTOR_PROXY_PORT = 8081;
  ...

如何同时运行多个react native项目

因为端口绑定的缘故,默认情况下react native是不支持同时运行多个项目的。

如果我们要同时运行多个react native项目的话,需要为同时运行的多个项目分配不同的端口号。这样以来,我们就可以让react native支持同时运行多个项目了。关于如何为不同项目分配端口号,查看上文 修改React Native监听端口 的教程即可。

如果大家对修改React Native端口还有不明白的地方,可以在文章下方给我留言,我看到了后会及时回复的哦。

参考

时间: 2024-11-10 00:16:59

教你轻松修改React Native的端口(如何同时运行多个React Native、8081端口占用问题)的相关文章

教你轻松修改PPT中剪贴画颜色

在制作演示文稿时,为了达到满意的效果我们经常会插入漂亮的剪贴画.但有时起到的效果会相反,因为剪贴画是程序自带的组件,其颜色都是固定的,这样就可能与页面整体的效果不协调.   其实大家不必为其担心,借助图片重新着色功能我们可以轻松修改剪贴画中任意一个区域的颜色.首选中选插入的图片,这样即会出现一个"图片"浮动工具条,如果没有出现可以先右击该剪贴画,选择"显示图片工具栏"命令即可. 接下来单击工具栏上的"图片重新着色"按钮,在打开的窗口左侧可以看到分

Windows密码忘了咋办 小编教你轻松破解

很多人出于保护隐私的目的,都习惯为自己的电脑设置开机密码,这原本是很好的使用习惯. 但是,现代社会作为一个被各种密码包围的社会,各种账户密码极易混淆,经常造成电脑开机密码记混,从而使得电脑无法正常开机,带来一系列麻烦. Windows密码忘了咋办小编教你轻松破解 正所谓未雨绸缪,今天笔者就从电脑开机密码的角度出发,教大家如何轻松破解Windows系统的开机密码,进入系统.(PS:仅限个人使用,勿做其他用途) 相信装过系统的朋友,都用过PE系统吧. 没错,最简单的Windows开机密码破解方法便是

《React Native移动开发实战》一一1.2 React Native的特点

1.2 React Native的特点 那么,作为跨平台应用开发的"新贵",React Native相比其他跨平台技术到底有哪些优势呢?1.2.1 其一:Learn Once, Write Anywhere 这句话是React Native官网(http://facebook.github.io/react-native/)对React Native的概述,简单明了地概括了React Native的最大特点和优点. 只需要学习React Native这一种开发方式(包括平台.语言和开发

同步助手2.03发布 未越狱轻松修改运营商图标

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   iOS6被黑客攻陷后,引发了新一轮的 iOS设备购买热潮.同步助手也 针对性地进行了改进和更新,满足更多iOS用户的实际需求.最新推出的2.0.3版本,重磅推出"修改运营商图标"的美化功能,并全面优化了App管理和升级的流程,打造更加完美的iOS设备管理助手. [ 轻松修改运营商图标打造个性iPhone] 看到iPhone状态栏上的"

教你轻松读懂Java中的Socket编程

餐前甜点 Unix的输入输出(IO)系统遵循Open-Read-Write-Close这样的操作范本.当一个用户进程进行IO操作之前,它需要调用Open来指定并获取待操作文件或设备读取或写入的权限.一旦IO操作对象被打开,那么这个用户进程可以对这个对象进行一次或多次的读取或写入操作.Read操作用来从IO操作对象读取数据,并将数据传递给用户进程.Write操作用来将用户进程中的数据传递(写入)到IO操作对象. 当所有的Read和Write操作结束之后,用户进程需要调用Close来通知系统其完成对

大量网络连接时,服务器使用一个端口接收所有连接的数据和使用一个端口对应一个连接有区别吗?

问题描述 大量网络连接时,服务器使用一个端口接收所有连接的数据和使用一个端口对应一个连接有区别吗? 看过一个程序,TCP连接,每个连接都是让客户端用不同的端口,但是想了一下觉得没什么必要,比如HTTP服务器就是一直用80端口处理所有的连接,也都处理得很好.所以就有了题目上的问题,请知道的人指教一下,谢谢! 解决方案 补充一下说明吧,对于IP层来说,只负责把数据送到节点上,而端口就是标识节点上的应用.所以对于不同的应用通讯,肯定不能用一个端口. 但对于一个应用来说,可以用一个端口.根据客户端的端口

有没有人在iis+tomcat下(主要是为了共用80端口),运行有spring框架的jsp网站的?

问题描述 有没有人在iis+tomcat下(主要是为了共用80端口),运行有spring框架的jsp网站的?我现在的问题是iis没法识别spring的中跳转,jsp页正常.

《React Native移动开发实战》一一2.4 React Native的Flexbox布局

2.4 React Native的Flexbox布局无论是在移动平台还是Web前端开发中,布局技术都是必不可少的.了解Web开发的读者想必都听说过著名的CSS"盒子模型",如图2.4所示. 图2.4 CSS"盒子模型"CSS"盒子模型"依赖于position属性.浮动属性以及display属性来进行布局,所以,对于一些特殊但常用的布局(例如垂直居中)实现就比较困难.于是,在2009年,W3C提出了一种新的方案--Flexbox布局.Flexbox

金山卫士教你轻松玩转电脑

电脑使用久了,总会对系统方方面面存在或大或小的不满:我习惯使用搜狗拼音而不是QQ拼音,为何我的浏览器首页总是变来变去?我希望用QQ影音而不是暴风影音打开所有电影文件,打开网页如果不再弹出各种广告世界该多清净--如果有个工具能帮我轻松搞定这所有烦恼该多好! 这个可以有.今日小编就为大家精选了15个不得不学的小技巧,能够轻松玩转你的电脑.难得的是这15个小技巧只用一款软件就都搞定了. 金山卫士不但可以查杀目前主流的病毒和木马,修复系统漏洞,优化系统,清理系统垃圾,管理软件,重装系统,还集成了多达29