为什么我不能在OSX 10.8.4上安装nodemon或supervisor?

我只是想使用terminal来安装nodemon或supervisor,而且我一直得到这个我不明白的错误。 我试着以sudo npm install supervisor -g的pipe理员身份运行,似乎可以正常工作,但是当我删除/添加了一些js代码的时候没有。 有任何想法吗?

 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$ 

PS我在预先存在的模板上运行这个,我的依赖是

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

当我尝试sudo这是发生了什么事情:

 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 supervisor@0.5.6 /usr/local/lib/node_modules/supervisor 

这似乎工作。 但是在应用程序代码中,我开始添加和删除javascript并单击保存,但除非在terminal中重新启动服务器,否则不会发生这种效果。

您遇到EACCES错误,这意味着您无权在Mac OS X中以标准用户身份在/usr/local/lib/node_modules/nodemon创build目录。

有两个解决scheme:

  • 使用sudo运行与超级用户相同的命令。 该软件包将安装在/usr/local/lib/node_modules
  • 更改npm的设置,将所有全局程序包安装到您的私人文件夹中,即您的用户拥有所有权。 看到这个相关的答案 ,一步一步解释过程。

晚会,但重要的是要注意,你应该避免在安装npm时使用sudosudo npm install是一个巨大的安全风险,因为您将任意脚本授权给您的计算机。

相反,您应该让自己成为NPM所在目录的所有者

sudo chown -R $USER /usr/local

接着

sudo chown -R $USER ~/.npm

现在你应该可以在没有sudo的情况下运行这些命令了:

npm install supervisor -g --save

我知道我迟到了,但你应该检查出nvm (节点的答案rbenv或virtualenv )。

安装

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

然后添加. ~/.nvm/nvm.sh . ~/.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

Interesting Posts