core icon indicating copy to clipboard operation
core copied to clipboard

[BUG] 在 remote 模式下,在文件选择器中删除文件会报错“文件XXX不存在。”

Open Moskize91 opened this issue 1 year ago • 2 comments

描述你的问题(Describe the bug)

在 remote 模式下,在文件选择器中删除文件会报错“文件XXX不存在。

复现路径(To Reproduce)

客户端以 electron 的形式启动,后端在远端服务器(文件系统在远端服务器,而非客户端本地)。

import { ClientApp } from "@opensumi/ide-core-browser/lib/bootstrap/app";

const app = new ClientApp({
    isRemote: true,
    wsPath: "ws://xxxxx",
    ... // 其他必要参数
});
await app.start(<XXX/>, "web");
  • 启动后在文件选择器中选中某个文件。
  • 按下快捷键 command + shift + back(macOS 系统)后,弹出对话框后选择确认删除。
  • 右下角弹出消息框:“文件XXX不存在”。

预期表现(Expected behavior)

预期文件成功删除,实际无法删除成功。

问题分析

看如下代码,它判断 isElectronRenderertrue 时进入分支。进一步观察可知。

https://github.com/opensumi/core/blob/d983d100160ec5aed39f6a8223367ac8c38b3e60/packages/file-service/src/browser/file-service-client.ts#L405-L410

moveToTrash 方法会调用 electron 的方法,以在客户端删除文件。

https://github.com/opensumi/core/blob/d983d100160ec5aed39f6a8223367ac8c38b3e60/packages/core-electron-main/src/bootstrap/services/ui.ts#L83-L85

显而易见,此时必然失败。因为在 isRemote: true 的情况下,真实的文件在服务端,客户端并不存在该文件。所以删除失败。

此处逻辑是否符合业务需求?如我所示的代码中,isElectronRenderer 的判断条件是否应该改为 isRemote

或者,我们的业务场景中,isElectronRenderer: true 并且 isRemote: true 的配置是否符合 opensumi 的要求?

环境信息(Environment)

  • OS: macOS 14.2.1 (23C71) Apple M1 Pro
  • Browser: electron
  • OpenSumi Version: 2.26.7

Moskize91 avatar Jan 05 '24 10:01 Moskize91