realize start不生效的首要原因是配置文件路径或监听范围错误;需检查.realize.yaml是否与go.mod同级、files.path是否覆盖main.go路径、ignore列表是否误排除入口文件,并确保Gin使用http.Server显式管理以支持进程重启。

realize init 之后 realzie start 不生效?检查 .realize.yaml 路径和文件监听范围
realize 启动失败最常见的原因是配置文件没被识别,或监听路径没覆盖到你的 main.go。它默认只监听当前目录下 **/*.go,但如果你项目结构是 cmd/main.go 或 internal/ 下有入口,就得手动改 .realize.yaml 的 files 段:
-
files下的path字段留空时,realize 以当前工作目录为根;若你从项目根外层启动,realize start就找不到main.go -
files的ignore列表如果误写了**/cmd/**,就会跳过cmd/main.go - 确保
.realize.yaml和go.mod在同一级目录,否则 realize 可能无法正确调用go run或go build
GoLand 内置 File Watcher 能替代 realize 吗?不能直接热重启服务
File Watcher 只能触发命令(比如 go build),但它不会杀掉正在运行的 Gin 进程,也不会自动重启。你改完代码,File Watcher 编译出新二进制,但旧进程还在监听 :9090,浏览器访问的还是旧逻辑。
想用 File Watcher 实现近似效果,得配成这样:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- Program:
sh(macOS/Linux)或cmd(Windows) - Arguments:
-c "kill $(lsof -ti:9090) 2>/dev/null || true; go run main.go" - Working directory:
$ProjectFileDir$ - Trigger: On save,不是 on frame deactivation
但这个方案在 Windows 上要换成 taskkill /f /im main.exe,且频繁 kill 可能导致端口释放延迟,出现 address already in use 错误。
为什么 realize start 后修改代码没触发重建?确认 gin 是否用了 http.Server.ListenAndServe
realize 依赖进程退出码判断是否需要重启。如果你的 Gin 服务用了 http.ListenAndServe,它会阻塞主线程,realize 无法捕获到进程结束信号,也就不会触发 rebuild。
必须改成显式管理 http.Server 实例,并监听 os.Interrupt 信号:
srv := &http.Server{Addr: ":9090", Handler: r}
go func() {
if err := srv.ListenAndServe(); err != http.ErrServerClosed {
log.Fatal(err)
}
}()
</pre>
<p>这样 realize 才能在你 Ctrl+C 或代码变更时收到退出信号,再拉起新进程。</p>
<H3>realize 和 air 哪个更稳?air 对 Go Modules 支持更好</H3>
<p>realize 已多年未更新(最后 release 是 2019 年),遇到 Go 1.20+ 的模块路径解析、嵌入式文件(<code>//go:embed</code>)或 vendor 模式容易报错。air 更活跃,且默认支持 <code>go list -f '{{.Dir}}' ./...</code> 获取所有包路径,对多 module 项目兼容性更强。</p>
<p>替换步骤很简单:</p>
<ul>
<li>卸载 realize:<code>go uninstall github.com/oxequa/realize@latest</code></li>
<li>装 air:<code>go install github.com/cosmtrek/air@latest</code></li>
<li>项目根目录执行:<code>air</code>,它会自动生成 <pre class="brush:php;toolbar:false;">.air.toml</code>,无需手动 init</li>
</ul>
<p>air 默认监听 <code>**/*.go 和 go.mod,改依赖也会触发 rebuild,比 realize 更贴近现代 Go 工程实践。</p>

















