6

我只是想使用终端安装 nodemon 或 supervisor,我不断收到这个我不明白的错误。我尝试以管理员身份运行,sudo npm install supervisor -g这似乎可以工作,但是当我删除/添加一些 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并单击保存,但是除非我在终端中重新启动服务器,否则效果不会发生。

4

3 回答 3

11

迟到了,但重要的是要注意sudo在安装 npm 时应避免使用。这是一个巨大的安全风险,sudo npm install因为您授予任意脚本对您的机器的 root 访问权限。

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

sudo chown -R $USER /usr/local

接着

sudo chown -R $USER ~/.npm

现在您应该能够在没有 sudo 的情况下运行命令:

npm install supervisor -g --save

于 2014-08-12T15:47:49.673 回答
7

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

有两种解决方案:

  • 以超级用户身份运行相同的命令,使用sudo. 该软件包将安装在/usr/local/lib/node_modules.
  • 更改 npm 的设置以将所有全局包安装到您的用户拥有的私有文件夹之一中。请参阅此相关答案,该答案逐步解释了该过程。
于 2013-11-15T20:36:38.003 回答
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

于 2015-07-21T13:26:18.950 回答