Apple Silicon Mac上VSCode Go扩展报spawn错误-86求助
问题
升级至Apple Silicon MacBook Pro并通过Migration Assistant迁移数据后,正在处理Homebrew从Intel二进制切换到ARM版本的相关问题。目前遇到的核心问题是:在VSCode中编辑Go程序时,频繁弹出错误提示Error: Error: spawn Unknown system error -86。
已尝试的操作:
- 卸载并重装Go扩展,无改善
- 终端中可正常编译、运行Go程序
- 在settings.json中配置以下环境变量,无效:
"go.goroot": "/opt/homebrew/Cellar/go/1.22.1/libexec", "go.toolsEnvVars": { "GOPATH": "/Users/my_username/go" },
补充的Extension Host日志:
2024-03-15 12:12:48.989 [info] ExtensionService#_doActivateExtension golang.go, startup: false, activationEvent: 'onLanguage:go' 2024-03-15 12:19:18.256 [error] TypeError: a.getTime is not a function at msBetween (/Users/my_username/.vscode-insiders/extensions/golang.go-0.41.2/dist/goMain.js:29032:21) at daysBetween (/Users/my_username/.vscode-insiders/extensions/golang.go-0.41.2/dist/goMain.js:29026:10) at TelemetryService.promptForTelemetry (/Users/my_username/.vscode-insiders/extensions/golang.go-0.41.2/dist/goMain.js:30472:9) at Timeout.callback [as _onTimeout] (/Users/my_username/.vscode-insiders/extensions/golang.go-0.41.2/dist/goMain.js:30335:58) at listOnTimeout (node:internal/timers:569:17) at processTimers (node:internal/timers:512:7)
排查建议与解决方向
1. 检查架构匹配性
- 确认VSCode为ARM64版本:点击左上角
Code(或Visual Studio Code)→关于Visual Studio Code,查看架构信息。若为x86_64版本,卸载后重新下载ARM64安装包。 - 验证Go工具链架构:终端执行
go version,输出需包含darwin/arm64。若显示darwin/amd64,彻底卸载现有Go,用Homebrew重新安装ARM版本。
2. 清理Go扩展缓存与工具
- 删除扩展缓存目录:移除
/Users/my_username/Library/Application Support/Code/User/globalStorage/golang.go(Insiders版本路径为/Users/my_username/Library/Application Support/Code - Insiders/User/globalStorage/golang.go)。 - 重装Go工具:打开命令面板(Cmd+Shift+P),执行
Go: Install/Update Tools,选择所有工具完成安装。
3. 修复VSCode环境变量继承
- 从终端启动VSCode:执行
open -a "Visual Studio Code"(或open -a "Visual Studio Code - Insiders"),让VSCode继承终端的PATH与环境变量,避免调用旧Intel路径。 - 调整settings.json配置:移除手动设置的
go.goroot,让扩展自动检测ARM版Go路径;更新go.toolsEnvVars确保包含Homebrew路径:
"go.toolsEnvVars": { "PATH": "/opt/homebrew/bin:$PATH", "GOPATH": "/Users/my_username/go" }
4. 规避Telemetry组件错误
日志中的TypeError来自扩展的Telemetry模块,可禁用该功能:
- 在settings.json中添加:
"go.telemetry.enableTelemetry": false
- 重启VSCode后观察错误是否消失。
5. 获取更详细调试日志
- 查看
Go频道输出:打开VSCode输出面板,切换到Go频道,查找工具启动失败的具体细节。 - 启用 verbose 调试:在settings.json中添加:
"go.trace.server": "verbose"
重启后查看Go Language Server频道的日志,定位spawn错误的具体来源。
内容的提问来源于stack exchange,提问作者gtcaz
相关产品推荐
相关产品推荐

