VSCode插件readDirectory遍历目录时未知错误-4094的分析与解决
在改别人的钢丝插件的时候,发现模组目录的本地化资源文件始终遍历不出来,结果为空,上vscodium调试发现报错未知错误-4094,ScanDir报错读取子目录异常。
最开始我还以为是子目录名称是replace(怎么可能嘛)或者目录路径有中文导致的,后来新建了一个test目录发现也这样,我就知道不是这个问题了,但是同样的代码,原始插件中钢丝安装目录的子目录就没问题,这就奇了怪了,所以我把目录对象都打印出来看看怎么个事。
相信眼尖的朋友已经看出来了,图中下面的子目录被处理之后相当于进行了URL编码,这种处理对于Windows文件资源管理器来说没有影响,但是,会导致node的fs模块无法扫描目录,那怎么解决呢?
实际上,path.join(dir.path, name)
是一个平台函数,他在自动处理vscode的Uri时会对路径进行处理,导致出现二次URL编码一样的问题。
知道问题所在之后,解决办法也很简单,换成vscode自己的路径拼接函数就可以了
1 | async function readDirFilesRecursivelyImpl(dir: vscode.Uri, prefix: string, result: string[]): Promise<void> { |
顺便吐槽一句p社员工写的乱七八糟的yml文件,根本不符合yml规范,光注释就五种格式,还有在yml冒号后值前加数字的,还有最后不写引号,中间引号不转义的,还有子值跟父值一个缩进的,js-yaml咔咔报错,我咔咔写正则文本预处理。。。
- 标题: VSCode插件readDirectory遍历目录时未知错误-4094的分析与解决
- 作者: IShirai_KurokoI
- 创建于 : 2024-09-01 10:47:00
- 更新于 : 2024-09-01 12:49:30
- 链接: https://ishiraikurokoi.top/2024-09-01-VSCode-Extension-Directory-Walk/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论