Mac下Zed配置iflow cli,报错 No such file or directory (os error2) 问题排查及解决

按照教程配置,在setting文件里面增加了下述配置,启动的时候会报错

{
    "iFlow CLI": {
      "command": "iflow",
      "args": ["--experimental-acp"]
}

报错信息如下:

这报错的是文件找不到,因此排查思路先看看Zed能不能找到iflow

看了一下Zed的源代码,他会读取用户当前使用的shell,获取环境变量PATH,以及拼接用户在命令行里面的env。 因为我们没有贴入env,所以也就是PATH。

在zed的命令行里面直接输出PATH,看看里面是什么信息

>echo $PATH

输出里面有nvm的bin路径: ~/.local/share/nvm/v22.20.0/bin

检查一下这个目录

>ll ~/.local/share/nvm/v22.20.0/bin

可以看到,iflow cli是在里面的,那么PATH是没有问题的。

然后再检查一下,在zed里面能否找到node。同样在terminal里面执行 node -v 或者 nvm current
这个时候,报错说node找不到。

很神奇,打开我的iTerms,输入node -v 或者 nvm current,都是能正常显示版本号的。

fish启动新命令行的时候,node版本是通过写在 ~/.nvmrc 里面读取的。 那么问题可能是Zed在调用命令的时候,并不会直接去读~/.nvmrc的node版本,导致没有node可以用

为了验证这个想法,我们在fish的config里面强制使用版本,修改 ~/.config/fish/config.fish 文件,在nvm环境声明处,强制加上 nvm use 22

然后重启Zed,重新加载环境变量。这个时候,Zed就可以正确读到node,并启动iflow cli了。

祝大家用Zed欢快~

1 个赞