2016-07-12 327 views
11

我運行npm安裝lodash但它拋出錯誤:EACCES:權限被拒絕錯誤。我知道這是權限問題,但據我所知,在本地安裝節點模塊不需要sudo權限。如果我用sudo運行它,它會被安裝在〜/ node_modules文件夾中。 drwxrwxr-x是現有文件夾的文件權限。我無法弄清楚可能會出現什麼問題。錯誤:EACCES:權限被拒絕

以下是錯誤信息。

npm ERR! tar.unpack untar error /home/rupesh/.npm/lodash/4.13.1/package.tgz 
npm ERR! Linux 3.13.0-88-generic 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "lodash" 
npm ERR! node v4.3.1 
npm ERR! npm v2.14.12 
npm ERR! path /home/rupesh/node_modules/lodash 
npm ERR! code EACCES 
npm ERR! errno -13 
npm ERR! syscall mkdir 

npm ERR! Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash' 
npm ERR!  at Error (native) 
npm ERR! { [Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash'] 
npm ERR! errno: -13, 
npm ERR! code: 'EACCES', 
npm ERR! syscall: 'mkdir', 
npm ERR! path: '/home/rupesh/node_modules/lodash', 
npm ERR! fstream_type: 'Directory', 
npm ERR! fstream_path: '/home/rupesh/node_modules/lodash', 
npm ERR! fstream_class: 'DirWriter', 
npm ERR! fstream_stack: 
npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25', 
npm ERR!  '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53', 
npm ERR!  'FSReqWrap.oncomplete (fs.js:82:15)' ] } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

npm ERR! Please include the following file with any support request: 
npm ERR!  /home/rupesh/Desktop/es6/npm-debug.log 
+0

是文件夾'node_modules'根的所有者? – AJS

+0

node_module文件夾尚未在我打算安裝lodash的文件夾內創建。 – xruptronics

+0

你在你的/ home/rupesh /目錄或其他目錄中運行了npm install嗎? – AJS

回答

2

創建package.json使用npm init解決了我的問題。

+0

但我不知道爲什麼package.json文件是安裝節點模塊時需要的,因爲package.json文件沒有更新或用於我的情況,因爲我沒有使用--save或--save-dev或類似的命令。 – xruptronics

+0

這很奇怪。我認爲你的npm conf中有些東西已經搞亂了,而init會重置它,反正它應該永遠是個謎,因爲我找不到其他地方類似問題的單一引用。 – AJS

-1

它沒有others(r-x)的寫入權限。試用

chmod a+w <folder> 

並重復。

+1

不'chown'有'-r'選項來防止在每個文件夾中都使用它'node_modules'? – DrakaSAN

+0

@Juanjo薩爾瓦多它沒有工作,它會拋出同樣的錯誤。 – xruptronics

+0

@DrakaSAN是的,chown有一個遞歸選項。 –

2

從我可以在你的日誌中看到您發佈的評論:

npm ERR! code: 'EACCES', 
npm ERR! syscall: 'mkdir', 
npm ERR! path: '/home/rupesh/node_modules/lodash', 
npm ERR! fstream_type: 'Directory', 
npm ERR! fstream_path: '/home/rupesh/node_modules/lodash', 
npm ERR! fstream_class: 'DirWriter', 

目錄/ home/rupesh/node_modules /不具備必要的權限創建目錄,以便運行chown -r rupesh:rupesh /home/rupesh/node_modules/這應該解決這個問題。

+0

做chown -R rupesh:rupesh/home/rupesh/node_modules /然後運行npm install lodash再在〜/ node_module文件夾中安裝lodash。但是這次不會拋出錯誤,但它不是我想要安裝的地方。 – xruptronics

+0

是的,我知道你應該在你的主目錄而不是桌面上創建項目。由於某種原因,npm出於某種原因將模塊安裝在'/ home/rupesh/node_modules'中。任何方式在你的家目錄工作應該是理想的 – AJS

+0

工作〜/項目/ ES6或類似的東西。 – AJS

0

首先安裝時沒有-g(全局)根目錄。嘗試使用-g(全局)後,它爲我工作。

0

FWIW我有相同的症狀,但有不同的包裝。創建package.json並運行npm init確實不是解決我的問題。

在這個系統上,顯然這個位置上的新文件夾是使用root權限創建的。在npm install期間,將創建新的文件夾。這會導致npm安裝失敗,即使使用sudo。

解決方案是在不帶root umask的不同位置運行npm install app

相關問題