阅读 253

yarn报“文件名、目录名或卷标语法不正确”错误的解决方案

这个坑折腾了好久,为了避免之后再踩,在这里记录下。

1、问题描述

在运行yarn create vuepress时报错:文件名、目录名或卷标语法不正确

我一开始以为是vuepress的问题,后来上网看文章发现vue、umi等也会出现这个问题,所以这个应该就是yarn的问题。

2、踩坑过程

根据Command的提示,去到指定目录(我的是'D:\02-install\node.js\node_global\bin')下,找到文件create-vuepress.cmd,其中内容如下:

@"%~dp0\C:\Users\18813\AppData\Local\Yarn\Data\global\node_modules\.bin\create-umi.cmd"   %*
复制代码

大概就是这里的问题了,这个路径有问题,在windows系统下,盘符前哪里还需要什么“%~dp0” 符号,所以将 C: 盘符前的符号删了,如下:

@"C:\Users\18813\AppData\Local\Yarn\Data\global\node_modules\.bin\create-umi.cmd"   %*
复制代码

保存后再运行yarn create vuepress,还是报同样的错误:文件名、目录名或卷标语法不正确。再去查看文件create-vuepress.cmd的内容,发现内容还是带有“%~dp0”,于是就报了同样的错了。

别慌,这个是因为修改了create-vuepress.cmd之后,运行yarn create vuepress之后会重新安装一次,然后就把改的文件覆盖了。

网上文章还有解决方案:在修改后,将create-vuepress.cmd所在文件夹路径(我的是‘D:\02-install\node.js\node_global\bin’)加入到系统环境变量path中,之后再运行对应命令即可。

大部分文章到这里都说已经解决了,也确实是解决了,但是我的依然报“文件名、目录名或卷标语法不正确”错误,已经奋战到深夜两点的我心好累。。。

3、终极解决方案

第二天晚上下班回来继续战斗,再查阅很多很多资料文章后发现,原来是因为我电脑的yarn目录和安装的模块不在相同的硬盘分区里导致的,而到上面那步就解决问题的应该是因为yarn默认安装在C盘(即运行缓存数据和安装目录都在C盘)了。

知道原因,那么问题就很好解决了:

首先查看 yarn 命令的目录:

yarn global bin
复制代码

再查看yarn的全局安装位置:

yarn global dir
复制代码

结果发现,yarn 的全局安装位置与bin的位置并不一致,于是去修改 yarn的全局安装位置和缓存位置:

yarn config set global-folder "D:\02-install\yarn\global"
yarn config set cache-folder "D:\02-install\yarn\cache"
复制代码

注意:建议不要放在node的文件夹里,将其放在另一个文件夹,否则会影响node安装的全局命令使用。

再次运行yarn create vuepress,终于成功运行:

至此,我的问题终于解决,希望我的解决方案对你有所帮助。