通过NPM安装Browsersync时权限被拒绝

时间:2016-10-11 19:59:12

标签: node.js npm npm-install

我无法将Browsersync https://www.browsersync.io/#install安装到我的Mac OS Sierra。我安装了node.js并在运行命令

之后
npm install -g browser-sync

我收到错误。我做错了什么?

pavels-iMac:~ Pavel$ npm install -g browser-sync

npm ERR! tar.unpack untar error /Users/Pavel/.npm/browser-sync/2.17.2/package.tgz
npm ERR! Darwin 16.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "browser-sync"
npm ERR! node v4.6.0
npm ERR! npm  v2.15.9
npm ERR! path /usr/local/lib/node_modules/browser-sync
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/browser-sync'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/browser-sync']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/usr/local/lib/node_modules/browser-sync',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/browser-sync',
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!     /Users/Pavel/npm-debug.log

4 个答案:

答案 0 :(得分:2)

two officially-suggested methods for fixing this

  1. 通过发出npm config set prefix ~./some/folder并将~./some/folder/bin添加到$PATH,直接npm全局安装模块somewhere your user owns

  2. 将/ usr / local的子集的所有权更改为您的用户。

    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

  3. 然而,第一个解决方案似乎最健全。我无论如何都不应该认为应该使用系统权限。

    关于How/why does npm recommend not running as root?

    的进一步讨论

答案 1 :(得分:1)

通常建议您将/ usr / local /的所有权授予您的用户帐户。这个位置由npm全局模块以及许多mac Homebrew包使用。

sudo chown -R $(whoami) /usr/local

这可以解决您的问题并防止您不必要地使用sudo。

答案 2 :(得分:1)

我在Mac macOS Sierra上遇到了类似的问题。

我建议使用更安全的方法,我遵循它并且它起作用,而不是CHOWN整个/ usr / local文件夹。

如果您已经通过Homebrew安装了Node,那么您已经可以使用它了,只需要输入node_modules文件夹即可。

sudo chown -R $(whoami) /usr/local/lib/node_modules

因此,我们修复了我们遇到问题的唯一目录的权限。

答案 3 :(得分:0)

sudo chown -R $(whoami) $(brew --prefix)/*

足以运行。