推测是目录读写权限出现问题。
解决方案如下:
我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立”node_global”及”node_cache”两个文件夹。如下图:
启动cmd,输入两条命令:
npm config set prefix “e:\php\nodejs\node_global”
npm config set cache “e:\php\nodejs\node_cache”
选择express这个比较常用的模块。同样在cmd命令行里面,输入“npm install express -g”(“-g”这个参数意思是装到global目录下,也就是上面说设置的“C:\Program Files\nodejs\node_global”里面。)
关闭cmd,打开系统对话框,“我的电脑”右键“属性”-“高级系统设置”-“高级”-“环境变量”。如下图:
进入环境变量对话框,在系统变量下新建”NODE_PATH”,输入”C:\Program Files\nodejs\node_global\node_modules“。(ps:这一步相当关键。) 2014.4.19新增:由于改变了module的默认地址,所以上面的用户变量都要跟着改变一下(用户变量”PATH”修改为“C:\Program Files\nodejs\node_global\”),要不使用module的时候会导致输入命令出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”这个错误。
在你的项目目录下面,重新输入npm install ,可以成功解决。
命令中,全局安装(global)和本地安装(local)方式的区别为带参数-g和不带参数-g。区别:1.安装位置 2.调用方式
1.安装位置:
npm install moduleName ,则是将模块下载到当前命令行所在目录。
npm install moduleName -g ,模块将被下载安装到全局目录中,即Node的安装目录下的node_modules下
2.调用方式:
在代码中,本地安装可以直接通过require()的方式引入;var moduleName = require('moduleName')
全局的安装是供命令行(command line)使用的,比如grunt,全局安装的方式是没有办法用require调用包的;
备注:
可以通过使用npm set global=true/false来设定安装模式,npm get global可以查看当前使用的安装模式。