今天使用node的npm安裝插件的時候遇到一個問題,那就是在項目目錄里面安裝插件的時候,必須使用超級用戶(sudo)執行才會安裝成功,否則會報如下錯誤:
以安裝 gulp-uglify 為例
$ npm install gulp-uglify --save-dev
npm WARN locking Error: EACCES, open '/Users/zyy/.npm/_locks/gulp-uglify-dadf3a03924005c9.lock'
npm WARN locking /Users/zyy/.npm/_locks/gulp-uglify-dadf3a03924005c9.lock failed { [Error: EACCES, open '/Users/zyy/.npm/_locks/gulp-uglify-dadf3a03924005c9.lock']
npm WARN locking errno: 3,
npm WARN locking code: 'EACCES',
npm WARN locking path: '/Users/zyy/.npm/_locks/gulp-uglify-dadf3a03924005c9.lock' }
npm ERR! Darwin 13.4.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "gulp-uglify" "--save-dev"
npm ERR! node v0.10.32
npm ERR! npm v2.1.7
npm ERR! Attempt to unlock /Users/zyy/Sites/gulp-p/node_modules/gulp-uglify, which hasn't been locked
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <http://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! /Users/zyy/Sites/gulp-p/npm-debug.log
網上查了下,好像是 ~/.npm 權限的問題,那么我們就先查看下 ~/.npm 的權限:
$ ls -al ~/ | grep .npm drwxr-xr-x 264 zyy staff 8976 Nov 18 09:45 .npm
接下來我們再更改 .npm 的權限:
$ sudo chown -R zyy /Users/zyy/.npm 或: $ sudo chown -R zyy ~/.npm
執行該權限修改命令后,只要不是安裝插件到全局,就不需要使用sudo。但是有一個奇怪到事就是,我剛修改到 .npm 的權限沒有改變。而現在再當前目錄安裝插件卻不要再使用 sudo 超級用戶權限了。
