2015-05-29 127 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 
使用

With

sudo npm link gulp 

一切工作正常。

我想知道的是:爲什麼npm link需要管理員權限?在我的理解,我創造,我有充分的權限,我的項目文件夾內的鏈接 - 所以它有什麼作用的全球系統上?

+0

好吧,我可以避免全局安裝並在項目中使用'npm install'(我有'packages.json')... – Alex

+0

您是否瞭解如何使用'npm link'?在Docker容器中使用'gulp'時我遇到同樣的問題,我不喜歡兩次安裝'gulp'的概念。 –

回答

2

相信npm link創建符號鏈接到你的地方安裝了全球節點程序包是當前目錄。見here

如果你沒有寫權限到該路徑(你可以用npm config get prefix檢查),你會得到你看到有錯誤。

爲了避免給sudo全球安裝/鏈接,你可以改變所有權/該目錄的權限。

+0

常識告訴我,該鏈接會從*我的項目*爲*全球已安裝的軟件包* ..奇怪..謝謝:-) – Alex

相關問題