You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:07:36