1、概述
大家好,我是欧阳方超,可以关注我的公众号“欧阳方超”,后续内容将在公众号首发。
使用npx vue create project_name创建项目,一直报错:https://registry.npm.taobao.org/vue failed, reason: certificate has expired,通过查找也发现这个镜像地址以更新,原有的可能不在适用,但是使用npm config set registry registry https://registry.npmmirror.com重新设置镜像地址后,发现创建项目时依然使用的是https://registry.npm.taobao.org镜像。后来发现是用户目录中的.vuerc文件在作怪。
2、解决过程
2.1、报错
首先,在使用npx vue create命令创项目时,报了错:
npx vue create liuvue
npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/vue failed, reason: certificate has expired
npm ERR! A complete log of this run can be found in:
2.3、尝试修改
听大家建议,最新的镜像地址已经改成了下面这个:
https://registry.npmmirror.com
行,那我也设置一下:
npm config set registry https://registry.npmmirror.com
之后查看registry地址,发现也生效了:
> npm config get registry
https://registry.npmjs.org/
但是再次创建项目的时候依然报错:
ERROR Failed to get response from https://registry.npm.taobao.org/binary-mirror-config
yarn install v1.22.15
info No lockfile found.
[1/4] Resolving packages...
info If you think this is a bug, please open a bug report with the information provided in .
error An unexpected error occurred: "https://registry.npm.taobao.org/@vue%2fcli-plugin-babel: certificate has expired".
但是此时有一中操作是可以成功创建项目的,那就是在创建项目时使用–registry指定npm地址,这说明了两个问题,其一是创建命令中指定–registry的优先级的较高的,其二是系统中有一处依然配置的是淘宝就镜像地址,现在的问题就是如何定位到它在哪。
2.3、最终解决
截至目前我进行过的尝试,系统用户目录中.npmrc和.yarnrc文件我都已经删除了,也执行过npm cache clean --force
命令,我甚至还重启了电脑。但这些办法都没能奏效,绝望之际在用户目录下发现了.vuerc文件,这个文件是干嘛用的不知道,但是肯定跟vue相关,因为文件名中有vue,打开这个文件,它的内容如下:
{
"useTaobaoRegistry": true,
"packageManager": "yarn",
"latestVersion": "5.0.8",
"lastChecked": 1680592192941
}
难道是"useTaobaoRegistry": true
这句户在起作用吗,我把该属性的值改为false,再次创建项目,结果成功创建!
3、总结
当创建 Vue 项目时,使用 npx vue create 命令报错 certificate has expired,并且发现之前的镜像地址可能已经无效。尝试修改全局的 npm registry 镜像地址为 https://registry.npmmirror.com,但发现创建项目时依然使用的是 https://registry.npm.taobao.org 镜像。经过排查,发现问题出在用户目录下的 .vuerc 文件中的配置。
在解决问题的过程中,通过修改全局的 npm registry 镜像地址和修正用户目录下的 .vuerc 文件中的配置,成功解决了使用 npx vue create 命令创建项目时的错误。这个经验提醒我们在处理类似问题时应该注意全局配置和用户配置文件的影响,以及各个配置项的优先级。
我是欧阳方超,把事情做好了自然就有兴趣了,如果你喜欢我的文章,欢迎点赞、转发、评论加关注。我们下次见。