在我的mac上运行ruby on rails项目。我需要在我的Android手机上测试它。有没有办法在我的Android手机上查看我的mac localhost?
答案 0 :(得分:68)
名称“localhost”只是您自己计算机的环回。要在Android上访问它,您需要找到计算机的IP地址。
查找此信息的最常用方法(适用于Mac和Linux)是进入终端并键入ifconfig
。查找“en0”或“en1”,并在该条目下查找“inet”列表。这将是“192.168.1.100”的行。当您找到该地址时,您希望将其放入浏览器的地址栏中。
(具体来说,在Mac上,您可以转到“系统偏好设置”中的“共享”面板,它会告诉您。)
答案 1 :(得分:15)
以下是让您的本地主机可用于其他设备上的测试的快速操作:
1)识别Android的IP:选择您连接的Wi-Fi(与Mac上的相同),您将获得详细的IP)。例如:我们假设您的Android IP为:192.168.0.10
2)在Mac上打开一个Shell并编辑主机:
sudo nano /etc/hosts
3)编辑文件:
127.0.0.1 192.168.0.10
4)识别您的Mac IP :(如@Chuck完美解释) (在你的shell中):
ifconfig
5)打开您在手机上使用的最喜爱的网页浏览器,并使用以下内容直接连接到Mac IP(如果需要,还可以使用端口):
http://192.168.x.x:8000/
6)享受你的考试:)
请注意,您可以为Wi-Fi上连接的每个支持执行此操作。
答案 2 :(得分:13)
Chunk的答案是正确的,假设您的移动设备和您的计算机位于同一网络上。但是,如果您希望本地主机服务器对更广泛的Internet可见(例如,通过3G进行测试,开发webhook或与远程同事/客户端协作),则需要更多本地地址(从10. *或192.168开始。* )对更广泛的互联网不可见。
传统的解决方案是端口转发和动态DNS,但最近出现了一些旨在简化此过程的服务(免责声明:我是其中一个的作者,PageKite)。
这些服务为您提供公共DNS名称和软件,将您的“localhost”与云端中继服务器(也就是反向代理)连接起来。例如,如果您使用的是PageKite,则可以在终端中运行以下命令:
$ pagekite.py 80 yourname.pagekite.me
...创建从http://yourname.pagekite.me/
到http://localhost:80
上运行的Web服务器的映射。程序运行时,您的localhost站点将对Internet的其余部分可见。为了再次将其设为私有,您只需关闭pagekite.py连接器程序。
为了完整性,以下是我所知道的一些localhost隧道服务:
(抱歉没有链接到最后两个,SO垃圾邮件保护阻止我对我的竞争对手公平。; - )
答案 3 :(得分:8)
这对我来说可以通过本地网络访问带有IP的rails服务器:
/ etc / hosts应该有这个条目:
127.0.0.1 192.168.100.12
其中192.168.100.12是终端中ifconfig命令可以找到的IP地址。
使用此命令启动rails服务器:
rails server -b 0.0.0.0 -p 8080
答案 4 :(得分:6)
答案 5 :(得分:2)
阅读完这个帖子后(建议工作!)我整理了一个指南来解决这个问题。 This link to that guide that has screenshots for every step and where to look。或者文本粘贴在下面。谢谢你的帮助!
首先,您的手机和笔记本电脑必须连接到同一个WiFi网络。如果您正在使用手机移动热点,它仍然有效。但是,请确保在继续之前将两个设备连接到同一网络。
接下来,收集您的手机IP地址。为此,我使用Network Info II应用程序。绝对有另一种方法可以实现这一目标。但是,Network Info II可以根据需要运行,并且是本教程的文档。
现在打开计算机上的终端(不要担心你所在的目录)并运行命令sudo nano / etc / hosts /。输入系统密码后,您会在终端顶部附近看到一串带有localhost字样的数字。事实上,Localhost只是计算机自己的服务器地址的别名,因此当您在浏览器中访问localhost时,它只会将http请求路由到您的本地计算机。要将手机绑定到此循环,请在数字字符串和Localhost之间输入其IP地址。
要保存此项,请在提示保存时按控制+ X然后按Y.之后,回车键将返回标准命令行。
在终端中打开第二个选项卡,然后启动本地服务器。我只使用一个简单的python服务器来测试它,它可以通过在终端python -m SimpleHTTPServer 8000中运行来运行。但是,我假设您可以启动任何您喜欢的本地服务器,因为您需要的只是引用是端口号。如果你使用简单的python服务器,那个端口号是8000。
在终端中运行ifconfig。这将显示大量信息,您应该向下滚动一半。您正在寻找的是在en0:或en1:键中的inet之后和netmask之后的一串数字。
完成!在Android上,打开浏览器并访问inet编号,然后输入冒号(:)和端口号。
答案 6 :(得分:2)
MacOS Catalina 10.15.4
en0: flags0=<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 0
...
inet 192.168.0.123 netmask 0xffffff00 broadcast 192.168.0.255
...
http://<IP address found in en0 -> inet>:<port if needed>
答案 7 :(得分:1)
虽然已经接受了一个答案,但这对我有用:
ifconfig
类型并查找en0/en1 -> inet
,则应该类似于19*.16*.1.4
。)打开您的移动设置并转到网络 - &gt;长按你的wifi网络 - &gt;修改网络 - &gt;向下滚动到高级选项 - &gt;选择代理手册并在代理主机名中键入您的地址,即在端口内19*.16*.1.4
输入您的端口。并保存。
在Google Chrome浏览器中搜索what is my ip
并获取您的IP,让我们说它是1**.1**.15*.2**
1**.1**.15*.2**:port/
。就这么简单。
答案 8 :(得分:1)
此外,如果您要在Android / iOS设备上测试使用 Angular 开发的 PWA应用,则需要使用:
ng serve --host 0.0.0.0
以启动服务器CLI。
如果收到“无效的主机头”,请使用:
ng serve --host 0.0.0.0 --disableHostCheck true
答案 9 :(得分:1)
如果您使用php运行本地主机,则解决方案是将 cy.get('div.main-content')
.then(($sectionBody) => {
// @ts-ignore
cy.waitUntil(() => {
return ($sectionBody.find('div[data-cy="sales_listing_section"]').length > 0)
}, {
errorMsg: `ERROR: Sales section has not loaded.`,
timeout: 10000, // waits up to 10000 ms, default to 5000
interval: 500, // performs the check every 500 ms, default to 200
verbose: true,
customCheckMessage: `CHECK: If Sales section has loaded`
})
.then(() => {
cy.log('Sales section', 'Loading finished');
})
})
替换为Macs IP
localhost
代替
php -S 192.168.x.x:8080
答案 10 :(得分:0)
如其他答案所述,URL必须由计算机的IP地址而不是本地主机组成。如果这不起作用,请尝试其他操作,然后在Android应用中进行api调用时检查端口是否正确提及IP地址。也就是说,您应该对以下格式的网址进行api调用:http://192.168.X.X:80/api/..
答案 11 :(得分:0)
对于 MacO,打开系统偏好设置 > 网络。
您应该看到消息“并且具有 IP 地址:my-ip-address”
那将是您的 IP 地址,然后在浏览器中导航到 http://my-ip-address/port-number。切记不要在 http 中添加“s”。