拓冰建站拓冰建站
首页 / 资讯中心 / 正文

portless hosts sync 详解:彻底解决 Safari 无法解析 .localhost 的问题

portless hosts sync 详解彻底解决 Safari 无法解析 .localhost 的问题【免费下载链接】portlessReplace port numbers with stable, named local URLs. For humans and agents.项目地址: https://gitcode.com/GitHub_Trending/por/portlessportless 是一个本地开发工具用稳定、命名的.localhostURL如https://myapp.localhost替代混乱的端口号支持 HTTPS HTTP/2。但在 macOS 上有个著名坑Safari 无法解析.localhost子域名。本文将详解portless hosts sync这条一行命令如何彻底解决该问题。为什么 Chrome 能打开Safari 却报错.localhost并不是真正的 DNS 域名——它之所以开箱即用是因为 Chrome、Firefox、Edge 等浏览器内置了特殊处理见到.localhost后缀就直接解析为127.0.0.1根本不走系统 DNS。而 Safari 没有做这个特殊处理它依赖操作系统的 DNS 解析器。在部分系统配置下系统解析器不认识.localhost子域名于是出现❌ Chrome / Firefox 打开https://myapp.localhost→ 正常❌ Safari 打开同一个地址 → 找不到服务器这就是很多开发者在 Mac 上遇到的经典困惑同一个 URL换个浏览器就坏了。一键修复portless hosts sync 快速上手修复方式非常直接把当前活跃的路由域名手动写入系统的 hosts 文件让系统 DNS 也能解析。portless 提供了一条专门命令portless hosts sync # 把当前路由写入 /etc/hosts修复 Safari portless hosts clean # 之后清理移除 portless 的条目执行portless hosts sync后终端会列出所有被写入的域名例如Synced 2 hostname(s) to /etc/hosts: 127.0.0.1 myapp.localhost 127.0.0.1 api.myapp.localhost在 macOS / Linux 上写入/etc/hosts需要管理员权限portless 会自动请求 sudo 提权你只需输入一次密码Windows 上则要求以管理员身份运行写入%SystemRoot%\System32\drivers\etc\hosts。 这条命令的完整实现位于 cli.ts权限升级与错误处理都封装在这段逻辑里。hosts 文件里的受管区块是怎么工作的portless 不会随意往 hosts 文件里塞东西。核心实现在 hosts.ts它用一对标记注释圈出一个受管区块# portless-start 127.0.0.1 myapp.localhost 127.0.0.1 api.myapp.localhost # portless-end这套设计有几个关键点特性说明 精确边界只读写两行标记之间的内容绝不碰你手写的其他 hosts 条目♻️ 幂等更新每次 sync 会先删除旧区块再重建重复执行不会产生重复行 干净卸载portless hosts clean只移除受管区块并规范化多余空行 可查询getManagedHostnames()可随时读出当前已同步的域名列表这些行为都有对应的单元测试覆盖参见 hosts.test.ts。免手动hosts 自动同步机制默认开启其实大多数情况下你根本不用手动执行hosts sync。portless 的代理进程会持续监视路由文件cli.ts每当有应用启动或退出、路由发生变化时就会自动把最新的路由域名同步进 hosts 文件。这意味着portless myapp next dev启动应用 →myapp.localhost自动进入 hosts再开portless api.myapp pnpm start→ 新域名自动追加应用退出 → 对应条目自动从区块中移除如果你希望完全关闭自动同步比如不想让任何工具碰 hosts 文件设置环境变量即可PORTLESS_SYNC_HOSTS0该开关的判断逻辑见 hosts.ts 的shouldAutoSyncHosts函数。排查工具portless doctor 自动给出修复建议如果 Safari 依然打不开可以先运行体检命令它只检查、不修改任何状态portless doctordoctor 会逐一检查 Node.js 环境、代理存活状态、路由表、HTTPS 证书信任以及每个已注册域名能否通过系统解析器解析。一旦发现无法解析的域名它会明确提示缺失原因并直接给出修复建议⚠ myapp.localhost did not resolve through the system resolver. → Run: portless hosts sync相关检查逻辑在 cli.ts。常见问答FAQQhosts 同步会影响局域网LAN模式吗不会冲突。自动同步同样覆盖自定义 TLD 域名和 LAN 模式下的.local域名逻辑一致都是往受管区块写入127.0.0.1或对应地址条目。Q卸载 portless 时会残留 hosts 记录吗不会。portless clean会连同~/.portless状态、系统信任库中的 CA 证书以及 hosts 受管区块一起清理干净。Q我手动改过 hosts 文件会被覆盖吗不会。portless 只管理# portless-start与# portless-end之间的内容你的其他条目原样保留。总结场景命令Safari 打不开.localhostportless hosts sync手动同步不需要了portless hosts clean不确定问题出在哪portless doctor完全禁用 hosts 自动同步环境变量PORTLESS_SYNC_HOSTS0一句话总结portless hosts sync用一行命令把.localhost路由写入系统 hosts让依赖系统 DNS 的 Safari 也能正常解析彻底告别换浏览器就打不开的玄学问题。完整功能介绍可参阅 README.md。【免费下载链接】portlessReplace port numbers with stable, named local URLs. For humans and agents.项目地址: https://gitcode.com/GitHub_Trending/por/portless创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门