问题起因:

Npm 和 Yarn 混用后导致全局依赖的混乱。yarn global add umi 后成功,但是却无法使用,而 npm 安装的能正常使用。

起初以为是全局变量的问题,将 yarn global bin 的路径添加到 .bash_profile 后仍然无法使用。

后来发现问题的原因是: yarn global bin 默认的指向是在 node 下的,yarn 安装依赖后可执行的命令也都是在这个目录下,但是这个目录 npm 能访问,但是 yarn 却不能。

解决方法:

知道问题所在后,我们需要修改一下 yarn global bin 的位置,将它制定到我们有权限访问的地方,我放的是当前用户的目录下的一个 .yarn 隐藏文件:

yarn config set prefix ~/.yarn

设置完成我们在看看

yarn global bin

现在能看到我们设置的位置 /Users/noko/.yarn/bin,当然 yarn global add xxx 时,xxx 还是运行不了的,这是因为我们还没修改环境变量。

sudo vim ~/.bash_profile

在文件里添加下面这一句,因为这个 PATH 是动态指向 yarn global bin 的,这样以后在修改 yarn global bin 也不用修改环境变量了。

export PATH=”$PATH:yarn global bin

现在更新一下配置文件,输入命令或者重新打开终端都可以

source ~/.bash_profile