前言
在前端的开发过程中,我们需要学会nodejs,vue和react等库和插件的使用,但是在安装依赖的时候经常会报错“不是内部或外部的命令”,百度的结果都是要配置环境变量,初学的时候可是被折磨的不轻,所以这次打算把相关的原理弄清,为了一劳永逸,决定写这篇文章。
问题产生的原因
我们的系统盘有很多的文件和文件夹,每一个内存盘相当于一个仓库,而文件相当于材料,但是仓库东西太多,当我们想要使用某一样东西的时候,就需要个记录物品存放的清单,而环境变量就是清单上的条目,记录的就是文件存放的地址,而上面的报错就是找不到对应的条目。
原理分析
不是内部或外部的命令中有两个关键词,一个是内部命令一个是外部命令,内部命令如cd、pwd等,外部命令就是安装的依赖中提供的可运行的脚本(暂且这么理解),而外部命令通常是.cmd或者无后缀名的文件类型,而环境变量里面存的就是这些文件的路径,因为系统会自动找寻这个路径下的这类文件来运行,既然确定了运行原理,那我们不是就可以测试一下了嘛,首先新建一个.cmd的文件,并在里面随便写些什么,然后把路径写在环境变量的Path里( 用户环境变量指的是当前用户,如果切换到其他用户或者其他域的时候就会不生效,系统环境变量是所有用户的,随便在哪里写区别不大),然后我们通过shell窗口直接输入文件名 我这边是在E盘下新建test.cmd 里面写上 “测试的cmd”,然后通过cmd输入test,显示如下:
解决问题
现在我们知道了报错原因和系统实现的原理,那么现在我们开始解决问题。 现在我们用npm安装vue测试。
- 首先安装nodejs,一路下一步,安装的时候尽量不要把nodejs安装在C盘,我这边安装在E盘
- 将npm的cmd文件对应的文件地址复制放在环境变量中,我这边写在系统环境变量的path中,然后node -v和npm-v测试一下。
-
然后配置npm全局依赖安装的位置和目录,先新建npm文件夹,再新建一个global和cache文件夹(这两个文件夹只是为了将缓存依赖和目录分开),然后配置通过命令行将后续的依赖指向该位置: npm config set prefix "E:\工具\npm\global" (依赖存放在这里) npm config set prefix "E:\工具\npm\cache" (目录指向这里)
-
用npm安装依赖,这里用vue做例子
npm i vue vue-cli -g- 将依赖的.cmd文件路径写在环境变量里(其他的也是类似)
补充一些npm常用命令
- 清除shell窗口内容 cls
- 清除npm缓存 npm cache clean --force
- 设置镜像源 npm config set registry registry.npm.taobao.org