core
core copied to clipboard
[BUG] 在 remote 模式下,在文件选择器中删除文件会报错“文件XXX不存在。”
描述你的问题(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)
预期文件成功删除,实际无法删除成功。
问题分析
看如下代码,它判断 isElectronRenderer
为 true
时进入分支。进一步观察可知。
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