2013-11-15 104 views
4

我只是試圖安裝使用終端的nodemon或supervisor,並且我不斷收到這個我不明白的錯誤。我試着以sudo npm install supervisor -g的管理員身份運行,似乎工作,但比我沒有刪除/添加一些JS代碼。有任何想法嗎?爲什麼我不能在OSX 10.8.4上安裝nodemon或supervisor?

Squirrels-MacBook-Air:lesson7_examples Squirrel$ npm install nodemon -g 
npm http GET https://registry.npmjs.org/nodemon 
npm http 304 https://registry.npmjs.org/nodemon 
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/nodemon' 
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/nodemon'] 
npm ERR! errno: 3, 
npm ERR! code: 'EACCES', 
npm ERR! path: '/usr/local/lib/node_modules/nodemon', 
npm ERR! fstream_type: 'Directory', 
npm ERR! fstream_path: '/usr/local/lib/node_modules/nodemon', 
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 12.4.1 
npm ERR! command "node" "/usr/local/bin/npm" "install" "nodemon" "-g" 
npm ERR! cwd /Users/Squirrel/Documents/Code/Memry/Memry_Mongoose 
npm ERR! node -v v0.10.21 
npm ERR! npm -v 1.3.11 
npm ERR! path /usr/local/lib/node_modules/nodemon 
npm ERR! fstream_path /usr/local/lib/node_modules/nodemon 
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/nodemon' 
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/Squirrel/Documents/Code/Memry/Memry_Mongoose/npm-debug.log 
npm ERR! not ok code 0 
Squirrels-MacBook-Air:lesson7_examples Squirrel$ 

P.S.我在預先存在的模板,在運行此,我的依賴性是

"dependencies": { 
    "mongoose": "~3.6.15", 
    "express": "~3.3.4", 
    "jade": "~0.34.1", 
    "email-validator": "~0.1.2" 
    } 

當我試圖須藤這是發生了什麼事:

sudo npm install supervisor -g --save 
Password: 
npm http GET https://registry.npmjs.org/supervisor 
npm http 304 https://registry.npmjs.org/supervisor 
/usr/local/bin/node-supervisor -> /usr/local/lib/node_modules/supervisor/lib/cli-wrapper.js 
/usr/local/bin/supervisor -> /usr/local/lib/node_modules/supervisor/lib/cli-wrapper.js 
[email protected] /usr/local/lib/node_modules/supervisor 

這似乎工作。但是,在應用程序代碼中,我開始添加和刪除javascript並單擊保存,但除非在終端中重新啓動服務器,否則效果不會發生。

+0

你的問題不明確。它使用'sudo'工作嗎?當你說「*似乎工作,但不是當我刪除/添加一些js代碼*」時,你究竟做了什麼? –

+0

那裏我添加了上面使用sudo時發生的事情。 – Squirrl

+0

的確,使用sudo看起來像是有效的。在保存文件時,服務器行爲未更新的事實可能與nodemon的不良使用有關。我建議打開另一個問題,因爲你的nodemon安裝看起來很好。 –

回答

6

您遇到一個EACCES錯誤,這意味着你沒有權利/usr/local/lib/node_modules/nodemon創建一個目錄在Mac OS X標準的用戶

解決辦法有兩個:

  • 使用sudo作爲超級用戶運行相同的命令。該軟件包將安裝在/usr/local/lib/node_modules
  • 更改npm的設置,將所有全局程序包安裝到您的用戶擁有的其中一個私人文件夾中。請參閱this relevant answer,它逐步說明了該過程。
+0

我試過了'sudo npm install supervisor -g --save',似乎通過了,但沒有奏效。例如,當我刷新瀏覽器時,在我的應用程序中刪除一段代碼沒有效果,但只有當我在終端中重新啓動服務器時才起作用。 – Squirrl

11

晚會晚會,但重要的是要注意,您應該避免在安裝npm時使用sudo。對於sudo npm install這是一個巨大的安全風險,因爲您正在對您的計算機授予任意腳本的根用戶訪問權限。

相反,你應該讓自己的目錄的所有者在故宮

sudo chown -R $USER /usr/local

然後

sudo chown -R $USER ~/.npm

現在,你應該能夠沒有sudo運行命令:

npm install supervisor -g --save

+0

編號'/ usr/local'不應該屬於您的用戶帳戶。 (Homebrew是這樣做的,但是,他們錯了。) –

2

我知道我遲到了,但您應該查看nvm(節點對rbenvvirtualenv的回答)。

安裝

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash

然後加入. ~/.nvm/nvm.sh~/.bashrc~/.profile,或~/.zshrc

使用

如果你想使用版本0.10,運行nvm install 0.12.7 (或nvm install stable),然後nvm use 0.12.7

安裝你的庫,EACCESS沒有錯誤,然後去鎮上。 npm install -g supervisor工作得很好!

要加載在新標籤頁的特定版本默認情況下,使用命令nvm alias default 0.12.7

+1

要使用NVM創建節點默認版本,正確的命令是'nvm alias default 0.12.7'。所有新標籤頁將在默認版本運行時打開。 – Duane