应先卸载旧版再安装:macOS需brew uninstall air,Windows需确保air.exe在%GOPATH%\bin且该路径已加入PATH;验证用air -v看版本号和(devel)标识,启动失败主因是root、bin、cmd、include_ext四点未对齐。

air 安装失败或版本不对,怎么确认真装上了
直接 go install github.com/air-verse/air@latest 是当前推荐方式;但 macOS 上如果之前用 Homebrew 装过旧版,得先 brew uninstall air,否则 air -v 显示的版本和实际运行的不一致。Windows 用户要注意:生成的 air.exe 必须在 %GOPATH%\bin 下,且该路径得进系统 PATH,否则命令行里敲 air 会报 “不是内部或外部命令”。验证是否生效,就看 air -v 输出有没有版本号和 (devel) 标识。
启动后改代码没反应,八成是这三处配错了
air 默认只监听 .go 文件,且只从当前目录递归扫描——如果你不在 go.mod 所在根目录运行,它根本找不到你的包。常见失效点:
-
root = "."必须指向含go.mod的目录,不能是cmd/或internal/子目录 -
[build].cmd和[build].bin路径必须完全一致,比如cmd = "go build -o ./tmp/main .",那bin就得是"./tmp/main",少个.或多层../都会报exec: "./tmp/main": file does not exist -
[watch].include_ext和[build].include_ext都要加非.go后缀,比如改了config.yaml,两处都得有"yaml",漏一节就不触发
改模板、YAML 或 HTML 后不重启?不是 bug,是默认不监听
air 的设计目标是 Go 代码热重载,不是全栈 Live Reload。它默认只 watch .go,.yaml、.html、.tmpl 这类文件压根不在监控列表里。解决办法就是显式配置:
在 .air.toml 的 [watch] 和 [build] 两节都加上:include_ext = ["go", "yaml", "yml", "html", "tmpl"]。但注意:Linux 下 inotify 句柄有限(默认单进程最多 8192),加太多后缀容易触发 inotify limit reached;宁可按需加,别一股脑堆。
初始化并管理阿里云SDK Go 客户端,涵盖 sync.Once 单例、goroutine 安全、endpoint 与 region 配置、VPC 端点及调试。
立即学习“go语言免费学习笔记(深入)”;
常见报错怎么快速定位
failed to build, error: exit status 2 —— 别怪 air,这是你代码编译不过。立刻看终端最后一屏红字,90% 是 undefined: xxx 或 import cycle not allowed;先手动跑一遍 go build 确认。
fork/exec ./tmp/main: permission denied —— 多见于 Linux/macOS,原因通常是 ./tmp 目录没写权限,或 NFS 挂载 strip 了执行位。解法:把 [build].cmd 改成 "go build -o ./tmp/main . && chmod +x ./tmp/main",同时确保 bin 和它严格一致。
air: failed to kill process: no such process —— 上次 panic 后进程僵死但 PID 残留,直接 pkill -f 'tmp/main'(macOS/Linux)或 taskkill /F /IM main.exe(Windows)清掉就行。
root、bin、cmd、include_ext 这四点对齐;其他参数调得再细,只要这四个没对上,改十次也白搭。

















