我正在开始研究JS项目,我想使用bower,grunt等等。 qunit-sinon
是我项目的主目录:
tducin@home:~/Development/qunit-sinon (grunt)$ ll
razem 192
drwxrwxr-x 5 tducin tducin 4096 sie 24 11:45 ./
drwxrwxr-x 3 tducin tducin 4096 sie 23 18:00 ../
drwxrwxr-x 5 tducin tducin 4096 sie 23 18:18 bower_components/
-rw-rw-r-- 1 tducin tducin 458 sie 23 18:15 bower.json
drwxrwxr-x 8 tducin tducin 4096 sie 24 11:42 .git/
-rw-rw-r-- 1 tducin tducin 552 sie 23 20:46 .gitignore
-rw-rw-r-- 1 tducin tducin 1148 sie 24 11:41 Gruntfile.js
-rw-rw-r-- 1 tducin tducin 485 sie 23 18:26 index.html
-rw-rw-r-- 1 tducin tducin 1079 sie 23 20:45 LICENSE
drwxrwxr-x 4 tducin tducin 4096 sie 24 11:46 node_modules/
-rw-rw-r-- 1 tducin tducin 140356 sie 24 11:45 npm-debug.log
-rw-rw-r-- 1 tducin tducin 346 sie 24 11:44 package.json
-rw-rw-r-- 1 tducin tducin 324 sie 23 18:30 README.md
-rw-rw-r-- 1 tducin tducin 1402 sie 24 11:00 tests.js
我在全球范围内安装了以下产品:node / npm,bower,grunt-cli。我使用grunt-init gruntfile
初始化了我的Gruntfile.js
。我package.json
的内容是:
tducin@home:~/Development/qunit-sinon (grunt)$ cat package.json
{
"engines": {
"node": ">= 0.10.0"
},
"repository": {
"type": "git",
"url": "git://github.com/tkoomzaaskz/qunit-sinon"
},
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-jshint": "~0.10.0",
"grunt-contrib-qunit": "~0.5.2",
"grunt-contrib-watch": "~0.6.1"
}
}
现在我想运行npm install
来安装所有缺少的模块(少数grunt插件自动添加到Gruntfile.js),然后我收到以下错误:
tducin@home:~/Development/qunit-sinon (grunt)$ npm install
npm ERR! Error: EACCES, mkdir '/home/tducin/.npm/underscore/1.6.0'
npm ERR! { [Error: EACCES, mkdir '/home/tducin/.npm/underscore/1.6.0']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/home/tducin/.npm/underscore/1.6.0',
npm ERR! parent: 'jshint' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Linux 3.13.0-34-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! cwd /home/tducin/Development/qunit-sinon
npm ERR! node -v v0.10.31
npm ERR! npm -v 1.4.23
npm ERR! path /home/tducin/.npm/underscore/1.6.0
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, mkdir '/home/tducin/.npm/underscore/1.6.0'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/tducin/Development/qunit-sinon/npm-debug.log
npm ERR! not ok code 0
npm想要全局安装 - 这就是他想拥有管理员权限的原因。但这不是我想要做的。
我很确定这个错误的原因非常明显,但我不知道。请解释一下为什么npm尝试在/home/tducin/.npm
(全局)而不是我的本地项目node_modules
目录中安装。
答案 0 :(得分:1)
由于代表我无法评论......
调试日志中有什么内容吗?
/home/tducin/Development/qunit-sinon/npm-debug.log
由于全局模块通常位于/usr/local/lib/node_modules
或/usr/lib/node_modules
请发布结果:
ls -l -a /home/tducin/ | grep npm
由于.npm文件夹可能已创建为root
答案 1 :(得分:0)
好的,过了一段时间我遇到了类似的问题。实际上我是~/.npm
目录本身的所有者,而不是根目录。但我的问题是~/.npm
的一些内容是我的,有些是root的内容。这就是安装一些模块并安装其他模块失败的原因。这可能是因为我以错误的方式使用npm install。
以下命令修复了问题:
sudo chown -R tducin:tducin ~/.npm