描述
在Visual Studio Code扩展主机进程中发生了一个错误,表示操作被取消。这个取消似乎是未处理的,并被报告为错误。这个问题是在扩展操作的上下文中遇到的,可能涉及到GitHub Copilot Chat扩展活动。
错误详情
- 类型: 已取消
- 消息: 已取消
- 位置:
extensionHostProcess.js
中的各个位置以及特定的扩展文件(github.copilot-chat-0.11.1/dist/extension.js
)。 - 处理: 否
堆栈跟踪
- 错误起源于扩展主机进程和GitHub Copilot Chat扩展的多个点,表明由于取消而导致扩展操作的广泛影响。
- 具体的位置包括
extensionHostProcess.js
中的示例化和操作方法,以及GitHub Copilot Chat扩展中的各种操作。
可能的问题
取消错误表明由扩展启动的异步操作被过早终止。这可能是由于用户操作、内部逻辑条件不满足或其他扩展干扰正常操作引起的。
重现步骤
- 在macOS 14.0上运行带有已安装版本0.11.1的GitHub Copilot Chat扩展的Visual Studio Code。
- 参与涉及扩展主机进程的活动,如发起Copilot会话或其他与扩展相关的操作。
- 在操作被中断或无法按预期完成的情况下,取消错误可能会出现。
预期行为
VSCode扩展主机中,尤其是涉及GitHub Copilot Chat等扩展的操作,应该成功完成或优雅地处理取消,而不会导致未处理的错误。
实际行为
在扩展主机进程中发生了一个操作被取消的情况,导致了一个可能导致用户工作流或扩展功能受损的未处理错误。
建议修复
- 调查导致取消的具体操作,确定它们是否源于用户操作、扩展冲突或内部逻辑错误。
- 在异步操作周围实现更强大的错误处理,确保取消是可以预料到和管理的,而不会升级为未处理的错误。
- 审查并在必要时更新GitHub Copilot Chat扩展和其他相关扩展,以确保它们在扩展主机环境中的兼容性和稳定性,特别是关注异步任务管理。
环境
- Node版本: v18.15.0
- macOS版本: 14.0
- 架构: arm64
- 环境: 生产环境
- 错误级别: 错误
- 错误机制: onunhandledrejection
- 操作系统: macOS 14.0
- 运行时: Node v18.15.0
2条答案
按热度按时间dgsult0t1#
当我运行
> Developer: Reload Window
时,我看到了这个。p1iqtdky2#
我怀疑这个问题出现在以下代码中:
vscode/src/vs/platform/clipboard/browser/clipboardService.ts
第43行到第61行,3e8b60f
| | // 在Safari中,有以下注解: |
| | // |
| | // "写入剪贴板的请求必须在用户手势期间触发。 |
| | // 在用户手势(如"click"或"touch"事件处理程序)的范围之外调用clipboard.write或clipboard.writeText将导致API调用返回的promise立即被拒绝。" |
| | // 来自:https://webkit.org/blog/10855/async-clipboard-api/ |
| | // |
| | // 由于扩展在web worker中运行,并以异步方式处理手势,因此它们不会被Safari归类为"在用户手势响应中",并且会被拒绝。 |
| | // |
| | // 此函数设置了一些处理程序来解决这种行为。 |
| | privateinstallWebKitWriteTextWorkaround(): void{ |
| | consthandler=()=>{ |
| | constcurrentWritePromise=newDeferredPromise(); |
| | |
| | // 由于我们刚刚针对这个新事件创建了一个新的promise,取消之前的promise |
| | if(this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled){ |
| | this.webKitPendingClipboardWritePromise.cancel(); |
我们在compiler-explorer(利用monaco-editor)中看到了许多类似的错误,当用户从Safari浏览时。
cancel
的调用是:据我所知,这不是任何异步操作的一部分,所以也许意图是
throw
而不是return
?但我真的不知道我在说什么,也没有macOS来尝试调试这个。@jrieken 也许你能帮忙?