2013-11-15 34 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

相关问题