2013-12-12 3 views
6

Вдохновленный Крисом Койером post, я решил, что дам хрюкать. Но у меня большие проблемы с настройкой.Как установить grunt-cli без ошибок?

Во-первых, я установил узел.

Затем я добавил файл package.json в моем корне проекта, в том числе это:

{ 
    "name": "example-project", 
    "version": "0.1.0", 
    "devDependencies": { 
    "grunt": "~0.4.1" 
    } 
} 

Тогда я побежал npm install

Наконец, я побежал npm install -g grunt-cli

, который вернулся с тонной ошибок:

npm http GET https://registry.npmjs.org/grunt-cli 
npm http 304 https://registry.npmjs.org/grunt-cli 
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/grunt-cli' 
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/grunt-cli'] 
npm ERR! errno: 3, 
npm ERR! code: 'EACCES', 
npm ERR! path: '/usr/local/lib/node_modules/grunt-cli', 
npm ERR! fstream_type: 'Directory', 
npm ERR! fstream_path: '/usr/local/lib/node_modules/grunt-cli', 
npm ERR! fstream_class: 'DirWriter', 
npm ERR! fstream_stack: 
npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23', 
npm ERR!  '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53', 
npm ERR!  'Object.oncomplete (fs.js:107:15)' ] } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

npm ERR! System Darwin 11.4.2 
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "grunt-cli" 
npm ERR! cwd /Users/bryce/repo 
npm ERR! node -v v0.10.23 
npm ERR! npm -v 1.3.17 
npm ERR! path /usr/local/lib/node_modules/grunt-cli 
npm ERR! fstream_path /usr/local/lib/node_modules/grunt-cli 
npm ERR! fstream_type Directory 
npm ERR! fstream_class DirWriter 
npm ERR! code EACCES 
npm ERR! errno 3 
npm ERR! stack Error: EACCES, mkdir '/usr/local/lib/node_modules/grunt-cli' 
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23 
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53 
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15) 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /Users/bryce/repo/npm-debug.log 
npm ERR! not ok code 0 
Bryce:repo bryce$ npm install -g grunt-cli 
npm http GET https://registry.npmjs.org/grunt-cli 
npm http 304 https://registry.npmjs.org/grunt-cli 
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/grunt-cli' 
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/grunt-cli'] 
npm ERR! errno: 3, 
npm ERR! code: 'EACCES', 
npm ERR! path: '/usr/local/lib/node_modules/grunt-cli', 
npm ERR! fstream_type: 'Directory', 
npm ERR! fstream_path: '/usr/local/lib/node_modules/grunt-cli', 
npm ERR! fstream_class: 'DirWriter', 
npm ERR! fstream_stack: 
npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23', 
npm ERR!  '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53', 
npm ERR!  'Object.oncomplete (fs.js:107:15)' ] } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

npm ERR! System Darwin 11.4.2 
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "grunt-cli" 
npm ERR! cwd /Users/bryce/repo 
npm ERR! node -v v0.10.23 
npm ERR! npm -v 1.3.17 
npm ERR! path /usr/local/lib/node_modules/grunt-cli 
npm ERR! fstream_path /usr/local/lib/node_modules/grunt-cli 
npm ERR! fstream_type Directory 
npm ERR! fstream_class DirWriter 
npm ERR! code EACCES 
npm ERR! errno 3 
npm ERR! stack Error: EACCES, mkdir '/usr/local/lib/node_modules/grunt-cli' 
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23 
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53 
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15) 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /Users/bryce/repo/npm-debug.log 
npm ERR! not ok code 0 

Я предполагаю, что выше ошибки являются причиной того, что когда я пытался запустить grunt, я просто получаю -bash: grunt: command not found

Кто-нибудь знает, что происходит?

+1

пытались ли вы с Судом? Также это возможный дубликат для этого http://stackoverflow.com/questions/18736943/sudo-npm-install-g-grunt-cli-gives-me-an-error –

+0

Вы были правы. Я не знаю, как я этого не видел в своем поиске. Спасибо огромное! –

+0

проблема в вопросе, на который вы ссылаетесь, немного отличается, так как искатель тоже использовал sudo, но ответ был именно тем, что мне нужно. Каков надлежащий протокол переполнения стека, когда это происходит? удалить вопрос? ответь мне? –

ответ

12

Все, что нужно, это добавить 'sudo', так как у меня не было разрешения на установку grunt-cli по умолчанию. Как только я выполнил следующую команду и ввел свой пароль, она работала так, как ожидалось.

sudo npm install -g grunt-cli 

Надеюсь, это поможет кому-то!

+0

npm не следует запускать с помощью sudo – linuxdan

+0

@linuxdan, чтобы объяснить, почему? решение работает .. –

+1

@ l19 установка чего-либо с sudo изменяет пользователя. По-видимому, sudo npm использует пользователя «nobody». Однако любая другая запущенная вами программа будет работать как ваш пользователь. Если между «nobody» и вашим пользователем существуют различия в разрешении, это может вызвать проблемы. Это также подразумевает, что «никто» может каким-то образом сделать то, что вы не можете, что имеет даже более страшные последствия для безопасности ... Но здесь нет ни того, ни другого. – linuxdan

9

EDIT: Статья, приведенная ниже, довольно старая и относится к pre-v0.3 Yikes! В настоящее время, если npm запущен с правами sudo, он будет отказываться от пользователя никому перед выполнением команд.

Согласно утвердителю npm, установка пакетов с sudo считается плохой практикой, поскольку вы разрешаете этому пакету полностью контролировать вашу систему, и вы не можете и НЕ ДОЛЖНЫ доверять этим пакетам с помощью root-доступа.

http://howtonode.org/introduction-to-npm

+2

Примечание: установка с правами root (с помощью sudo) была [рекомендована с NPM 0.3] (https://github.com/npm/npm#permissions-when-using-npm-to-install-other-stuff) ([Feb 2011] (https://github.com/npm/npm/tree/v0.3.0)). Он будет запускать их как «никто». Большая часть информации об обратном возникла из комбинированного года 0,1 и 0,2 до этого. –

+0

@JonathanLonowski - Я обнаружил эту информацию после этого сообщения. В конце концов, я все же утверждаю, что не использовать 'sudo' лучше, если его можно избежать. Особенно в OSX. – srquinn

0

Я рекомендую установить хрюкать в вашем проекте (вместо того, чтобы использовать опцию -g).

Например, чтобы установить черновые инструменты командной строки используйте:

cd ~/path-to-my-project 
npm install grunt-cli --save-dev 

Если вы хотите запустить пехотинец, вы используете:

cd ~/path-to-my-project 
./node_modules/./bin/grunt 

Устанавливая хрюкать-Cli в вашем проекте, вы у вас будет полный контроль над тем, какая версия установлена, и вам не нужно полагаться на непоследовательные переменные PATH.

+0

не уверен, почему, но для меня двоичный файл находится на './Node_modules/.bin/grunt' not ./bin. – chim

0

У меня тоже была эта проблема, и после прочтения результатов немного ближе я понял, что моя установленная версия node.js несовместима с текущей версией grunt-cli.

Устранена проблема с узлом node.js.

-1

Команда для установки хрюкать в вашей папке проекта есть:

npm install grunt --save-dev 
1

Поскольку вы не должны установить с помощью Sudo - вы будете делать это перед установкой пакетов и больше не ударят ошибки разрешения:

SUDO Чаун -R $ USER/USR/местные

источник: https://howtonode.org/introduction-to-npm

Смежные вопросы