关于cnpm不是内部或外部命令,修改环境配置后仍无效的解决办法

时间:2024-04-09 16:07:16

平时开发中npm作为包管理器来说相对来说比较好用,但是由于服务器不在国内所以有的时候速度会慢一点,也可能经常会出现不稳定的情况,所以需要使用淘宝的cnpm代替npm,因为它的服务器在国内,所以使用可以提高我们的下载速度和稳定性。

但在安装使用时,会发现报 cnpm不是内部或外部命令 的问题,在网上看到也有好多 ‘解决’ 的办法,最多的是修改系统的环境变量,然而在我这并没有什么卵用,所以在此记录下自己摸索解决的过程。

首先,安装 cnpm 完成后,此时执行 cnpm -v 是会提示命令未找到:
关于cnpm不是内部或外部命令,修改环境配置后仍无效的解决办法
接下来的关键,是注意上图中红框部分,因为安装完后会返回执行 cnpm 命令的脚本文件路径 和 cnpm 的安装路径,而你安装 node 后为啥就可以直接使用 npm 命令来管理包呢?查看 npm 的安装路径,果然是与 cnpm 的安装路径不一致,如下:
npm : D:\Program Files\nodejs\node_modules\npm
cnpm: D:\Program Files\nodejs\node_global\node_modules\cnpm

返回到 node 的安装目录,我们可以看到 npm 命令执行的脚本文件:D:\Program Files\nodejs\npm:
关于cnpm不是内部或外部命令,修改环境配置后仍无效的解决办法
却并未发现 cnpm 命令执行的脚本文件,这就是我们不能直接使用 cnpm 命令的原因。

解决问题

此时,我们就可以根据安装 cnpm 返回的路径来找到它的执行脚本路径,然后将其复制到与 npm 命令执行脚本文件同一个目录下,即 D:\Program Files\nodejs目录下:
关于cnpm不是内部或外部命令,修改环境配置后仍无效的解决办法
接着还没完,此时你打开 cnpm 文件:
关于cnpm不是内部或外部命令,修改环境配置后仍无效的解决办法
可以看到脚本执行到对应安装目录是指向不是它自己的安装目录,而是 D:\Program Files\nodejs\node_modules ,这里就好办了,你有 两种方法 去解决这个问题:

一是修改脚本文件,把上图红框部分路径修改成 cnpm 对应的安装目录,即 $basedir/node_modules/cnpm/bin/cnpm 改为 $basedir/node_global/node_modules/cnpm/bin/cnpm。(经过测试,cnpm.cmd文件不改没有影响,它是在window系统的cmd 命令窗口执行才会有影响,在这也一并改了过来。)

二是可以直接把 cnpm 的安装目录整个拷贝到 D:\Program Files\nodejs\node_modules 下,即与原来脚本文件中的路径一致。

以上两种方法都有一个共性,就是把 脚本执行目录 指向正确的 安装目录,这样执行脚本才能关联到对应的文件并执行命令,以上两者选择其一即可。