2015-05-29 5 views
4

Я установил некоторые nodejs пакеты по всему миру черезПочему мне нужно называть npm-ссылку администратором?

sudo npm install gulp -g 

Теперь я (или другой разработчик на той же машине) хочет использовать его в проекте с

[email protected]:/my/project$ npm link gulp 

Это терпит неудачу с

unbuild [email protected] 
npm ERR! Error: EPERM, chmod '/my/projectnode_modules/gulp/bin/gulp.js' 
npm ERR! { [Error: EPERM, chmod '/my/projectnode_modules/gulp/bin/gulp.js'] 
npm ERR! errno: 50, 
npm ERR! code: 'EPERM', 
npm ERR! path: '/my/projectnode_modules/gulp/bin/gulp.js' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

npm ERR! System Linux 3.2.0-4-amd64 
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "link" "gulp" 
npm ERR! cwd /raid5/workspaces/jgr/aktivglueck-laravel 
npm ERR! node -v v0.10.29 
npm ERR! npm -v 1.4.21 
npm ERR! path /my/projectnode_modules/gulp/bin/gulp.js 
npm ERR! code EPERM 
npm ERR! errno 50 
npm ERR! stack Error: EPERM, chmod '/my/projectnode_modules/gulp/bin/gulp.js' 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /my/projectnpm-debug.log 
npm ERR! not ok code 0 

С

sudo npm link gulp 

все работает нормально.

Что я хочу знать: Почему npm link нужны разрешения администратора? В моем понимании я создаю ссылку внутри моей папки проекта, где у меня есть полные разрешения - так что же она делает в глобальной системе?

+0

Хорошо, я мог бы просто избежать глобальной установки и использовать 'npm install' в проекте (у меня есть' package.json') ... – Alex

+0

Вы узнали, как использовать 'npm link'? У меня такая же проблема при использовании 'gulp' в контейнере Docker, и мне не нравится концепция установки' gulp' дважды. –

ответ

2

Я считаю, что npm link создает символическую ссылку на текущий каталог везде, где установлены глобально установленные пакеты узлов. См. here.

Если у вас нет прав на запись на этот путь (вы можете проверить это с помощью npm config get prefix), вы получите сообщение об ошибке, которое вы видите там.

Чтобы избежать глобальных подключений/ссылок, вы можете изменить права собственности на этот каталог.

+0

Здравый смысл сказал мне, что ссылка будет от * моего проекта * до * глобальных установленных пакетов * .. Странно .. Спасибо :-) – Alex

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