问题一:‘cnpm’不是内部或外部命令,也不是可运行命令或批处理文件”
解决办法:
1、检查是否配置系统环境变量。
步骤:
- a.win+R打开运行;输入 sysdm.cpl ,确定;“高级”选项卡,点击”环境变量“;系统变量中的path选项。
- b.新建系统变量:(实际情况根据nodejs安装目录来设置)
(1)D:\Program Files\tools\Nodejs
(2)D:\Program Files\tools\Nodejs\npm_install_modules\npm_global
(3)D:\Program Files\tools\Nodejs\node_global\node_modules\cnpm\bin
(4)D:\Program Files\tools\Nodejs\node_global; - c.重启cmd,走cnpm -v,成功。
2、如果配置环境变量不起作用,那么重新安装Nodejs到C盘(如果第一次没有安装在C盘),一般情况下问题都能解决。(听某位大牛说过C盘的权限比D盘权限大)。
问题二:全局安装(global)和本地安装(local)的区别
1、什么是全局安装(global)?
安装位置
全局安装方式是键入命令:npm install gulp -g 或 npm install gulp –global,其中参数-g的含义是代表安装到全局环境里面,包安装在Node安装目录下的node_modules文件夹中,一般在 \Users\用户名\AppData\Roaming\ 目录下,可以使用npm root -g查看全局安装目录。
调用方式
全局安装后可以供命令行(command line)使用,用户可以在命令行中直接运行该组件包支持的命令,如下图全局安装gulp后的cmd文件
2、什么是本地安装(local)?
安装位置
本地安装方式是键入命令:npm install gulp 或 npm install gulp –save-dev等,其中参数–save-dev的含义是代表把你的安装包信息写入package.json文件的devDependencies字段中,包安装在指定项目的node_modules文件夹下。
调用方式
本地安装后可以直接通过require()的方式引入项目中node_modules目录下的模块。本地安装可以让每个项目拥有独立的包,不受全局包的影响,方便项目的移动、复制、打包等,保证不同版本包之间的相互依赖,这些优点是全局安装难以做到的。
3、为什么全局安装后还要本地安装
1.在js实例代码中,默认下node.js会在NODE_PATH和目前js所在项目下的node_modules文件夹下去寻找模块,因此,如果只是全局安装,不能直接通过require()的方式去引用模块,需要手动解决包路径的配置问题,当然你也可以复制全局安装的node_modules文件夹到项目下,还有办法可以选择将环境变量的NODE_PATH设置为C:\Program Files\nodejs。
2.对于包的更新不好管理,可能你需要为每个包重新命名,如gulp@3.8.1、gulp@3.9.1…,为了区别不同项目使用指定的包,保证模块之间的相互依赖(这块下面会介绍),区别每个项目正常运行。
因此,不推荐只全局安装。
问题三:npm和cnpm问题。
1、由于新版的nodejs已经集成了npm,所以安装完nodejs也就同时安装了npm。使用cmd命令行输入”npm -v”来测试是否成功安装。
2、由于npm安装插件是从国外服务器下载,受网络影响很大,可能出现异常,继而淘宝团队生产一个完整的npmjs.org镜像,用cnpm代替npm,cnpm与nodejs的npm用法一致,只是在执行命令时,将npm改为cnpm。
3、cmd命令下安装cnpm,窗口直接输入下面的命令即可:
npm install cnpm -g –registry=https://registry.npm.taobao.org |