Wails项目在VSCode中无法直接调试main.go,因非标准Go入口需用wails dev启动后dlv attach;PATH未配置导致找不到wails命令;热更新失效多因文件目录不在frontend/或build/下;ERR_CONNECTION_REFUSED系前端代理配置错误。

Wails 项目在 VSCode 里打不开 main.go 的调试器?
VSCode 默认不识别 Wails 的 Go 入口结构,dlv 启动失败是常态。根本原因在于 Wails 生成的 main.go 不是标准 Go CLI 程序——它依赖 wails build 注入的运行时桥接逻辑,直接 go run main.go 会 panic。
- 别在 VSCode 里点「运行」或按
F5直接调试main.go,那只会报panic: runtime error: invalid memory address - 真要调试 Go 层,得用
wails dev启动开发服务器,再通过dlvattach 到进程:先运行wails dev,再在 VSCode 的.vscode/launch.json中配type: "delve"+mode: "attach"+processId(查ps aux | grep wails) - 日常开发优先用
wails dev+ 浏览器 DevTools 查前端逻辑;Go 层只在必要时 attach 调试,否则容易卡死或断连
VSCode 提示找不到 wails 命令?
wails 是独立 CLI 工具,不是 VSCode 插件,也不随 Go 安装。VSCode 终端找不到它,说明系统 PATH 没包含它的安装路径,和 Go mod 或 GOPATH 无关。
- 确认已执行
go install github.com/wailsapp/wails/v2/cmd/wails@latest(注意v2和@latest) - 检查
go env GOPATH输出,wails二进制实际在$GOPATH/bin/wails,确保该路径已加入系统 PATH(macOS/Linux 编辑~/.zshrc,Windows 在系统环境变量里加) - VSCode 启动方式影响 PATH:从桌面图标或 Dock 启动的 VSCode,可能没加载 shell 的 PATH;改用终端命令
code .启动,能继承当前 shell 环境
HTML/CSS/JS 修改后热更新失效?
wails dev 的热重载只监听项目根目录下 frontend/ 和 build/ 内的文件,且默认不处理 assets/ 或 public/ 这类自定义目录——这是最常被忽略的配置断点。
- 检查
wails.json中"frontend:watcher"字段是否启用(默认 true),并确认"frontend:devserver"地址与你npm run dev启的服务一致(比如"http://localhost:3000") - 若前端用 Vite,需在
vite.config.ts中设server.host: "127.0.0.1",否则 Wails 无法反向代理请求 - 修改非
frontend/下的静态资源(如icons/icon.png)不会触发刷新,这类文件需手动重启wails dev
调试时看到 Failed to load resource: net::ERR_CONNECTION_REFUSED
这是 Wails 的前端资源加载链断裂的典型错误,本质是 Go 后端没把前端请求正确代理到开发服务器,而非网络或跨域问题。
- 确认
wails.json中"frontend:devserver"的 URL 可被本机 curl 通(curl -I http://localhost:3000/index.html),如果超时,说明前端服务根本没起来 - 检查 Go 代码中是否误删了
app.WithDevServer("http://localhost:3000")这行(在main.go的wails.NewApp()链式调用里) - Windows 用户注意:WSL2 下前端服务跑在 Linux,但 Wails 进程在 Windows,
localhost不互通;得用host.docker.internal或真实 IP,并关掉防火墙
Wails 的坑不在语法,而在 Go、前端构建、本地网络三者的交界处。每次报错先盯住 wails.json 和终端里两行日志:一行是 wails dev 启动输出,另一行是前端服务启动后的访问地址——90% 的问题就藏在这两行之间。











