V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yazoox
V2EX  ›  macOS

macOS 如何让其它机器访问自己的 http://IPAddress:8080

  •  
  •   yazoox · 2020-07-01 09:12:50 +08:00 · 7000 次点击
    这是一个创建于 1613 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。编译了代码,启动了 node, 使用 http://localhost:8080/ 可以打开网站。

    但是,如果我想使用另外一台机器,访问该 mac 的 ipaddress 来打开这个临时的网站,怎么操作?

    1. firewall 是关闭的。
    2. preferences->sharing->"Internet Sharing"这个选项是“灰”的,无法点击。右侧有提示“You cannot start internet sharing because you have not selected a port to share your connection” 可是,也没有地方让我选择 port 啊?

    谢谢!

    第 1 条附言  ·  2020-07-01 10:06:51 +08:00
    已经解决,谢谢大家。

    解决方法:
    由于启动脚本支持指定 hostname,所以
    `yarn start --host 0.0.0.0`

    脚本实际上用 node 运行了一个 express server,express 启动时,是可以指定 hostname 的。使用 0.0.0.0 instead of localhost 就可以了。
    17 条回复    2020-07-01 23:17:14 +08:00
    dovme
        1
    dovme  
       2020-07-01 09:15:02 +08:00
    192.168.x.xxx 应该是这样吧
    dovme
        2
    dovme  
       2020-07-01 09:15:49 +08:00
    @dovme #1 同一 wifi 条件下
    march1993
        3
    march1993  
       2020-07-01 09:17:36 +08:00 via iPhone
    第二步是共享 internet 连接,相当于热点…
    yazoox
        4
    yazoox  
    OP
       2020-07-01 09:22:03 +08:00
    @dovme 我知道是通过这样的 ip address 访问啊。但是提示我打不开。好像是 connection refused 还是啥的。
    CoCoMcRee
        5
    CoCoMcRee  
       2020-07-01 09:22:58 +08:00
    yazoox
        6
    yazoox  
    OP
       2020-07-01 09:26:07 +08:00
    @CoCoMcRee 理论上是可以。但我得修改我们代码库的构建脚本,那个也不是个轻松活......
    现在我们是 `yarn start` 然后代码编译完成后,自动就启动了 http://localhost:8080 (具体启动啥,我也不清楚,估计是个 express,也得花时间研究一下,如果想替换成 anywhere 的话......)
    做前端的,你们懂的。
    kosmgco
        7
    kosmgco  
       2020-07-01 09:29:19 +08:00
    在「其他设备」上 telnet 一下看看端口有没有开

    mac 上启动服务用 0.0.0.0:8080 试试
    Weny
        8
    Weny  
       2020-07-01 09:29:34 +08:00 via iPhone
    监听 0.0.0.0
    henyi2211
        9
    henyi2211  
       2020-07-01 09:30:08 +08:00
    在 node 项目的配置文件里, 将 localhost 改成 你自己机子的 ip 地址
    meunicorn
        10
    meunicorn  
       2020-07-01 09:43:11 +08:00 via iPhone
    ngrok 了解一下
    nutting
        11
    nutting  
       2020-07-01 09:50:20 +08:00
    局域网是可以的。检查你的应用启动绑定到什么 ip 了,0.0.0.0 就没问题
    Vegetable
        12
    Vegetable  
       2020-07-01 09:54:18 +08:00
    检查这个配置,必须是 0.0.0.0,localhost 或者 127.0.0.1 都不行。
    https://webpack.js.org/configuration/dev-server/#devserverhost
    yancy0l
        13
    yancy0l  
       2020-07-01 10:03:13 +08:00
    首先,不知道是真的绑定了 localhost 还是 127.0.0.1,应该搞清楚。我最近遇到了类似的问题,这个问题应该取决于你将 8080 的服务映射到 哪个 ip 地址上。如果真的是 配置中写的 localhost,绑定到 127.0.0.1,也许可以通过修改 hosts 文件,将 localhost 映射为一个 192.136.1.1 (具体地址) 的局域网可以访问的地址,这样,另一个连接同一个局域网的机器就能通过 访问该 IP 地址访问到 8080 的服务。原理就是之前通过 localhost 和 127.0.0.1 绑定,提供仅供本地访问的服务,现在 localhost 和 IP 地址绑定 提供对外 服务。具体就是看你的服务启动的时候 绑定到什么 IP 了。楼上说的都对
    yazoox
        14
    yazoox  
    OP
       2020-07-01 10:03:53 +08:00
    @kosmgco
    问题解决了。我们的启动脚本里面,能够指定 hostname 。按照你建议的,use 0.0.0.0 instead of localhost (这个是默认的)就行了。

    `yarn start --host 0.0.0.0`

    现在我在另外一台机器,使用 http://<mac machine ip address>:8080,就可以访问了。


    谢谢!
    goodbyennn
        15
    goodbyennn  
       2020-07-01 11:46:33 +08:00
    最简单的办法就是 python -m http.server 8080
    IgniteWhite
        16
    IgniteWhite  
       2020-07-01 17:02:48 +08:00 via iPhone
    @meunicorn 不都用 frp 了吗
    buffzty
        17
    buffzty  
       2020-07-01 23:17:14 +08:00
    1. 局域网 监听局域网地址 192.168.x.x 或 0.0.0.0(所有地址)
    2. 外网 路由器 nat
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2698 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:21 · PVG 20:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.