You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fastify无法在Android模拟器中被浏览器访问,请求技术协助

解决Android模拟器无法访问Fastify服务的问题

核心原因是Fastify默认仅监听本地回环地址(127.0.0.1),而Express默认监听所有网络接口(0.0.0.0),导致模拟器无法连接到Fastify服务。以下是具体排查和解决步骤:

1. 修改Fastify监听地址

Fastify的listen方法默认host参数为127.0.0.1,仅允许本地进程访问。需要显式指定host: '0.0.0.0',让服务监听所有可用网络接口:

const fastify = require('fastify')({ logger: true })

// 定义测试路由
fastify.get('/', async (req, reply) => {
  return { message: 'Fastify works!' }
})

// 显式绑定到0.0.0.0
fastify.listen({ port: 3000, host: '0.0.0.0' }, (err) => {
  if (err) {
    fastify.log.error(err)
    process.exit(1)
  }
  console.log('Fastify running on http://0.0.0.0:3000')
})

2. 使用正确的模拟器访问地址

Android模拟器中,访问主机本地服务需要用专用回环地址10.0.2.2,而不是localhost或127.0.0.1。在模拟器浏览器中输入:

http://10.0.2.2:3000

3. 验证服务可用性

先在主机本地浏览器访问http://localhost:3000,确认Fastify服务能正常返回响应,排除服务启动失败的可能。

4. 检查防火墙设置

确保主机防火墙允许外部访问3000端口(或你指定的服务端口),避免模拟器请求被拦截。

对比Express的差异

Express的app.listen(port)默认底层绑定0.0.0.0,所以无需额外配置就能被模拟器访问。而Fastify为了安全默认限制本地访问,需要手动开启外部访问权限。

内容的提问来源于stack exchange,提问作者bonjofy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:10:28