opensumi / ide-startup

Quick starter for OpenSumi Web
https://opensumi.com
MIT License
189 stars 65 forks source link

Explorer WorkSpace持续加载 #75

Closed Jake-Du closed 11 months ago

Jake-Du commented 1 year ago

在workSpace中创建名为.sumi且内容不为空的文件夹会触发这个bug image 疑似core中file-tree的状态isReady和isLoading没有被成功赋值

erha19 commented 1 year ago

@Jake-Du 是否有录屏或提供一下你的操作路径,在 Mac 环境里无法复现该问题

Jake-Du commented 1 year ago

@Jake-Du 是否有录屏或提供一下你的操作路径,在 Mac 环境里无法复现该问题

这个问题只出现在使用docker镜像时

erha19 commented 1 year ago

@Jake-Du 那感觉可能是前后端环境不一致导致的路径问题,如 Windows 下使用的是 '\' ,而 Linux 环境下是 '/' 导致的问题,我这边没有环境测试,你可以看一下下面这段代码断点排查看一下:

  1. 文件树所有文件的加载默认都会从此处的逻辑进入:

https://github.com/opensumi/core/blob/ad721ea4259a2305f2287d82e792ae9331abc0dd/packages/file-tree-next/src/browser/file-tree.service.ts#L234-L238

  1. 这里可能的原因是出现在“压缩节点” 的计算逻辑上,即

https://github.com/opensumi/core/blob/ad721ea4259a2305f2287d82e792ae9331abc0dd/packages/file-tree-next/src/browser/file-tree.service.ts#305

这里期望输出的为一个带压缩路径的 children 数组,可以断点看一下是什么原因导致的无返回,或是否有相关报错

Jake-Du commented 1 year ago

断点排查发现问题似乎在这一行:https://github.com/opensumi/core/blob/ad721ea4259a2305f2287d82e792ae9331abc0dd/packages/file-tree-next/src/browser/file-tree.tsx#L266 image 删除await之后explorer加载问题就不再出现,原因未知。不清楚是否会引起新的问题。

erha19 commented 12 months ago

@Jake-Du 这里 file-tree.tsx#L266 的状态更新依赖这里这段的执行 https://github.com/opensumi/core/blob/ba5213f88e4440f6aea9dc28edff5b368ab1ecd3/packages/file-tree-next/src/browser/services/file-tree-model.service.ts#L388

可以看一下这里上面是否存在执行报错?

Jake-Du commented 12 months ago

@Jake-Du 这里 file-tree.tsx#L266 的状态更新依赖这里这段的执行 https://github.com/opensumi/core/blob/ba5213f88e4440f6aea9dc28edff5b368ab1ecd3/packages/file-tree-next/src/browser/services/file-tree-model.service.ts#L388

可以看一下这里上面是否存在执行报错?

排查断点,await语句似乎阻塞了之后的逻辑

CaptainNeo2023 commented 11 months ago

@erha19 我们也遇到同样的问题,目录有时候一直加载不出来,也是跑在Docker上面,用的Debian11做的Docker镜像系统。 image

改为其它路径又可以,比如在浏览器直接改为根路径回车,或者选择其它更低级的目录。 image image

5c5ea3b9737f1481838135c790a6f85

The continuos loop exists on IDE file tree explorer window. The Docker inage was built from Dockerfile that OpenSumi has published on Github and that Docker image deploys node on Debian. we have try Alpine Linux also.

erha19 commented 11 months ago

@CaptainNeo2023 我尝试在本地 Docker 中复现一下这个问题,你也可以试一下升级 OpenSumi 版本至最新的 2.25.4 版本

CaptainNeo2023 commented 11 months ago

@erha19 用2.25.4版本也是有同样的问题

image image

erha19 commented 11 months ago

@CaptainNeo2023 我看一下这个问题

erha19 commented 11 months ago

@Jake-Du @CaptainNeo2023 定位到原因了,这里核心原因是在 Ubuntu 或其他 Unix-like 系统环境内,. 开头的文件会默认作为隐藏文件并不可被独立监听,因此在只有 .sumi/xxx 这个路径文件时,这个边界情况会导致 OpenSumi 在 Unix 系统下的 Node 层监听报错导致文件树无法正常渲染。

你们也可以在用户设置中追加:

{
  "files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/*/**": true,
+    "**/.??*": false // <-- Add this line to include hidden files and directories
  }
}

来解决这个问题。

同时,这个 PR https://github.com/opensumi/core/pull/2912 可以解决这个问题(但只解决显示问题,如果需要监听 . 前缀文件变化仍然需要添加上面设置)。