当我们使用 npm uninstall 或 cnpm uninstall 时经常会出现这样的错误。事实上这个并不是由于权限问题导致的。
在安装模块时我们经常使用 --save 或 --save-dev。
安装:
cnpm install express --save // 安装到 dependencies中
cnpm install express -S // 等价于 --save
cnpm install express --save-dev // 安装到 devDependencies中
cnpm install express -D // 等价于 --save-dev
cnpm install express // 在package.json中没有记录
注意:上述的 -S 和 -D 必须使用大写,否则无效。
如:
cnpm install express -s
cnpm install express -d
// 这两种写法都将被识别为 cnpm install express
卸载:
cnpm uninstall express
卸载时经常会出错,报类似 npm WARN checkPermissions Missing write access…的错误。原因:
1.卸载命令错误。
(1)使用 cnpm install express -S 安装却使用 cnpm uninstall express -D 卸载,此时正确的卸载方式应该是使用:cnpm uninstall express 或 cnpm uninstall express -S。事实上,无论是使用 cnpm install express 或 cnpm install express -S 或 cnpm install express -D 都可以使用 cnpm uninstall express 来卸载。
(2)一旦卸载失败,再次卸载模块将不会成功。解决办法:重新安装该模块,再通过 uninstall 卸载即可。
2.同一个模块多次安装。
如:即执行了 cnpm install express -S 又执行了 cnpm install express -D。此时的模块将无法被成功卸载。package.json中的 dependencies 和 devDependencies 中相同的模块只能存在一个。
解决办法:手动删除 package.json 中 dependencies 或 devDependencies 中的一个模块条目,再使用 uninstall 卸载。
注:通过安装 cnpm install express 和 cnpm install express -D 再使用命令 cnpm uninstall express 是可以正常执行的。原因是:package.json 中的相同的模块只有一个,所以卸载不会出现问题。