在运行
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 bin目录和安装的模块在不同的硬盘分区里面导致的,而到上面那步就解决问题的应该是因为 yarn 默认安装在C盘(即运行缓存数据和安装目录都在C盘)了。
知道原因,那么问题就很好解决了:
首先查看 yarn bin 目录的位置:
yarn global bin
再查看 yarn 的全局安装位置:
yarn global dir
结果发现,yarn 的全局安装位置与 bin 目录的位置并不一致,于是去修改 yarn 的全局安装位置和缓存位置:
yarn config set global-folder "要安装yarn的磁盘路径"
yarn config set global-folder "D:\02-install\yarn\global"
yarn config cache-folder "要存放yarn缓存的磁盘路径"
yarn config set cache-folder "D:\02-install\yarn\cache"
我这里的 yarn 是不放在 node 的文件夹里面的,当然这个不是重点,重点是要将yarn bin目录和安装的模块放在相同的硬盘分区里面。
再次运行yarn create vuepress
,终于成功运行:
至此,我的问题终于解决,希望我的解决方案对你有所帮助。