跳至主要内容

对 GitHub Codespaces 客户端进行故障排除

本文提供有关使用 GitHub Codespaces 客户端时可能遇到的问题的故障排除信息。

备注

  • 目前,将 GitHub Codespaces 与 JetBrains IDE 结合使用处于公开测试阶段,可能会发生更改。
  • 要在 JetBrains IDE 中使用代码空间,你必须使用 JetBrains Gateway 的 2023.3.* 或 2024.1.* 版本。

对 Visual Studio Code Web 客户端进行故障排除

如果你在非 Chromium 内核的浏览器中使用 GitHub Codespaces 时遇到问题,请尝试切换到 Chromium 内核的浏览器,例如 Google Chrome 或 Microsoft Edge。或者,在 microsoft/vscode 存储库中搜索带有浏览器名称(如 firefoxsafari)标签的问题,以了解已知问题。

如果你在 Chromium 内核的浏览器中使用 GitHub Codespaces 时遇到问题,可以在 microsoft/vscode 存储库中查看是否遇到了 VS Code 的其他已知问题。

与在本地 VS Code 中工作时的差异

在浏览器中使用 VS Code Web 客户端打开代码空间时,你会注意到与在 VS Code 桌面应用程序中本地工作空间中工作时存在一些差异。例如,某些键绑定会不同或缺失,某些扩展的行为可能不同。有关摘要,请参阅 VS Code 文档中的“已知限制和改编”。

你可以在 microsoft/vscode 存储库中查看已知问题并记录 VS Code 体验中的新问题。

Visual Studio Code Insiders

Visual Studio Code Insiders 是 VS Code 最频繁的版本。它具有所有最新的功能和错误修复,但也可能偶尔包含导致构建中断的新问题。

如果你正在使用 Insiders 版本并注意到行为中断,我们建议切换到 Visual Studio Code Stable 并重试。

单击 编辑器的左下角并选择切换到稳定版本...。如果 VS Code Web 客户端未加载,或 不可用,你可以通过将 ?vscodeChannel=stable 附加到你的代码空间 URL 并加载该 URL 中的代码空间来强制切换到 Visual Studio Code Stable。

如果问题在 Visual Studio Code Stable 中未得到解决,请检查已知问题,并在需要时在 microsoft/vscode 存储库中记录 VS Code 体验中的新问题。

对简单浏览器进行故障排除

在代码空间中启动 Web 应用程序时,可以在嵌入在 VS Code 中的简单浏览器中预览正在运行的应用程序。在某些项目中,应用程序在启动时会自动在编辑器中的简单浏览器选项卡中打开。如果在代码空间的 devcontainer.json 配置文件中,应用程序运行所在的端口的 onAutoForward 属性设置为 openPreview,则会发生这种情况。

"portsAttributes": {
  "3000": {
    "label": "Application",
    "onAutoForward": "openPreview"
  }
}

如果简单浏览器标签未自动打开,你可以手动打开简单浏览器来查看应用程序。

  1. 在 VS Code 中,单击端口标签。

  2. 右键单击端口,然后单击在编辑器中预览

    Screenshot of the pop-up menu in the VS Code Ports tab. The menu entry "Preview in Editor" is highlighted with a dark orange outline.

简单浏览器标签未自动打开

如果 devcontainer.json 配置文件为某个端口指定了 "onAutoForward": "openPreview",但在应用程序启动时简单浏览器未自动打开,请检查应用程序是否已在配置中指定的端口上启动。如果目标端口繁忙,应用程序可能会在其他端口上启动。

为了实现 devcontainer.json 中指定的端口配置,GitHub Codespaces 会在创建代码空间时将配置写入 VS Code 的 settings.json 文件。你可以检查配置是否已正确写入代码空间中的 settings.json

  1. 在代码空间的终端中,输入以下命令。

    Bash
    cat ~/.vscode-remote/data/Machine/settings.json
    
  2. 验证 settings.json 文件是否包含如下行。

     "remote.portsAttributes": {
         "3000": {
             "label": "Application",
             "onAutoForward": "openPreview"
         }
     }
    

如果 settings.json 文件不包含这些设置,请检查你是否启用了 dotfiles,以及 dotfiles 中的任何配置是否覆盖了 settings.json 文件。有关详细信息,请参阅“针对你的帐户个性化 GitHub Codespaces”。

应用程序未加载

有时,你可能会发现简单浏览器标签已打开,但显示错误页面图标或空白页面,而不是正在运行的应用程序。如果正在加载的 Web 应用程序包含内容安全策略 (CSP),并且该策略限制了可以嵌入网站页面的域,则会出现这种情况。有关详细信息,请参阅 mdn 网站上的CSP: frame-ancestors

你可以在本地更改应用程序的 frame-ancestors 安全策略,以使应用程序在简单浏览器中显示。或者,如果 frame-ancestors 策略导致了问题,你应该能够通过在常规浏览器标签中打开应用程序(而不是简单浏览器)来查看应用程序。为此,请在 VS Code 中单击端口标签,右键单击端口,然后单击在浏览器中打开

VS Code 故障排除

在 VS Code 桌面应用程序中打开代码空间时,你可能会注意到与在本地工作区中工作相比有一些差异,但体验应该类似。

如果你遇到问题,可以在 microsoft/vscode 存储库中查看已知问题并记录 VS Code 体验中的新问题。

Visual Studio Code Insiders

Visual Studio Code Insiders 是 VS Code 最频繁的版本。它具有所有最新的功能和错误修复,但也可能偶尔包含导致构建中断的新问题。

如果你正在使用 Insiders 版本并注意到行为中断,我们建议切换到 Visual Studio Code Stable 并重试。

要切换到 Visual Studio Code Stable,请关闭 Visual Studio Code Insiders 应用程序,打开 Visual Studio Code Stable 应用程序,然后重新打开你的代码空间。

如果问题在 Visual Studio Code Stable 中未得到解决,请检查已知问题,并在需要时在 microsoft/vscode 存储库中记录 VS Code 体验中的新问题。

对简单浏览器进行故障排除

在代码空间中启动 Web 应用程序时,可以在嵌入在 VS Code 中的简单浏览器中预览正在运行的应用程序。在某些项目中,应用程序在启动时会自动在编辑器中的简单浏览器选项卡中打开。如果在代码空间的 devcontainer.json 配置文件中,应用程序运行所在的端口的 onAutoForward 属性设置为 openPreview,则会发生这种情况。

"portsAttributes": {
  "3000": {
    "label": "Application",
    "onAutoForward": "openPreview"
  }
}

如果简单浏览器标签未自动打开,你可以手动打开简单浏览器来查看应用程序。

  1. 在 VS Code 中,单击端口标签。

  2. 右键单击端口,然后单击在编辑器中预览

    Screenshot of the pop-up menu in the VS Code Ports tab. The menu entry "Preview in Editor" is highlighted with a dark orange outline.

简单浏览器标签未自动打开

如果 devcontainer.json 配置文件为某个端口指定了 "onAutoForward": "openPreview",但在应用程序启动时简单浏览器未自动打开,请检查应用程序是否已在配置中指定的端口上启动。如果目标端口繁忙,应用程序可能会在其他端口上启动。

为了实现 devcontainer.json 中指定的端口配置,GitHub Codespaces 会在创建代码空间时将配置写入 VS Code 的 settings.json 文件。你可以检查配置是否已正确写入代码空间中的 settings.json

  1. 在代码空间的终端中,输入以下命令。

    Bash
    cat ~/.vscode-remote/data/Machine/settings.json
    
  2. 验证 settings.json 文件是否包含如下行。

     "remote.portsAttributes": {
         "3000": {
             "label": "Application",
             "onAutoForward": "openPreview"
         }
     }
    

如果 settings.json 文件不包含这些设置,请检查你是否启用了 dotfiles,以及 dotfiles 中的任何配置是否覆盖了 settings.json 文件。有关详细信息,请参阅“针对你的帐户个性化 GitHub Codespaces”。

应用程序未加载

有时,你可能会发现简单浏览器标签已打开,但显示错误页面图标或空白页面,而不是正在运行的应用程序。如果正在加载的 Web 应用程序包含内容安全策略 (CSP),并且该策略限制了可以嵌入网站页面的域,则会出现这种情况。有关详细信息,请参阅 mdn 网站上的CSP: frame-ancestors

你可以在本地更改应用程序的 frame-ancestors 安全策略,以使应用程序在简单浏览器中显示。或者,如果 frame-ancestors 策略导致了问题,你应该能够通过在常规浏览器标签中打开应用程序(而不是简单浏览器)来查看应用程序。为此,请在 VS Code 中单击端口标签,右键单击端口,然后单击在浏览器中打开

故障排除 JetBrains IDE

性能问题

建议使用至少有 4 个内核的 GitHub Codespaces 机器类型来运行任何 JetBrains IDE。有关详细信息,请参阅“更改代码空间的机器类型”。

如果你正在使用具有 4 个或更多内核的机器,并且你在 JetBrains 中体验到的性能有点迟缓,则可能需要增加最大 Java 堆大小。

建议的堆大小根据你的代码空间的机器类型而异。

机器类型最大堆大小
4 核,16 GB RAM2048 MiB
8 核,32 GB RAM4096 MiB
16 核,64 GB RAM8192 MiB
32 核,128 GB RAM16,384 MiB

如果堆大小低于建议值,则在你的代码空间启动时会显示一条消息,建议你增加堆大小。你可以单击消息中的链接以自动增加堆大小。

Screenshot of the message recommending you increase the heap size.

根据你的代码库的大小以及运行应用程序所需的内存,你可能需要进一步增加堆大小。你应该将堆大小设置为上表中显示的大小和远程主机的 RAM 的 60% 之间。如果你有一个大型应用程序,你不应该设置过大的堆大小,以便为应用程序留出足够的内存。

  1. 在应用程序窗口顶部的导航栏左侧,单击代码空间的名称。

    Screenshot of the JetBrains client. The codespace name "urban meme," labeled "Resources critical," is highlighted with a dark orange outline.

  2. 在“性能”选项卡中,注意 CPU 负载和内存详细信息。这些将指示机器是否超载。

    Screenshot of the "Performance" tab in the resources dropdown, showing CPU Load at 97.5%, Memory at 60.6%, and Disk at 28.8%.

  3. 单击“设置”选项卡并编辑堆大小,将其增加到不超过代码空间可用内存的 60%。

    Screenshot of the "Performance" tab. In the "Maximum heap size" field, 3072 is entered and outlined in dark orange. Below this are "Save" and "Save and restart" buttons.

  4. 单击保存并重新启动

客户端无法在 macOS Ventura 中打开

在 macOS Ventura 中,使用 2022.3 之前的 JetBrains Gateway 版本,当你第一次尝试从 JetBrains Gateway 连接到代码空间时,会显示一条消息,告诉你 JetBrains 客户端应用程序“已损坏,无法打开”。

Screenshot of the 'cannot be opened' error message

此问题已在 JetBrains Gateway 2022.3 及更高版本中修复。

为避免此问题,请更新 JetBrains Gateway。

要解决旧版 Gateway 中的此问题

  1. 单击取消以关闭此消息。

  2. 单击屏幕左上角的 Apple 图标,然后单击系统设置

  3. 单击隐私与安全,然后向下滚动到“安全”部分。

    Screenshot of macOS "Privacy & Security" dialog, with a security message above the JetBrains Client and the "Open Anyway" button.

    你将看到一条消息,告诉你 JetBrains 客户端已被阻止使用。

  4. 单击仍然打开,将 JetBrains 客户端添加到你的已识别应用程序中。消息会再次显示,但这次会显示一个打开按钮。

    Screenshot of the error message with an 'Open' button
  5. 再次单击取消

  6. 返回 JetBrains Gateway 应用程序,并再次连接到所需的代码空间。JetBrains 客户端现在将成功打开。在你的 Mac 上授权客户端应用程序运行后,当你将来连接到你的代码空间时,将不会看到此消息。

SSH 连接问题

要通过在你的代码空间中运行的 SSH 服务器进行连接,你必须在你的 ~/.ssh 目录(macOS 和 Linux)或 %HOMEPATH%\.ssh 目录(Windows)中拥有一个 SSH 密钥,该密钥已添加到你的 GitHub 帐户中。如果你在此目录中没有任何密钥,GitHub CLI 将为你生成密钥。有关更多信息,请参阅“将新的 SSH 密钥添加到你的 GitHub 帐户”。

如果你遇到密钥验证问题,请尝试升级你的 GitHub CLI 版本。有关信息,请参阅 GitHub CLI 的自述文件中的升级说明

JetBrains IDE 问题

有关你正在使用的 JetBrains IDE 或 JetBrains Gateway 应用程序的特定问题,请参阅 JetBrains 网站上的“产品支持”。