在OSX中安装npm模块时权限被拒绝

时间:2017-11-12 18:36:35

标签: node.js macos npm

我正在尝试安装node-g.raphael,我收到以下错误:

Bender-03:htdocs alfred$ sudo npm install node-g.raphael --save
Password:

> contextify@0.1.15 install 
  /Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify
> node-gyp rebuild

gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir 
  '/Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify/build'
gyp ERR! System Darwin 16.7.0
gyp ERR! command "/usr/local/bin/node" 
  "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" 
  "rebuild"
gyp ERR! cwd 
  /Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify
gyp ERR! node -v v8.8.1
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: contextify@0.1.15 
  (node_modules/contextify):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: contextify@0.1.15 
  install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

+ node-g.raphael@0.0.9
added 2 packages and updated 1 package in 6.556s

我已经尝试了this solution,但它并没有解决我的问题,仍然遇到同样的错误。

请告诉我是否可以添加任何内容来帮助解决此问题。

5 个答案:

答案 0 :(得分:80)

Fixing npm permissions看到这个并且它有所帮助,也许你也可以试一试。

  • 选项1:将权限更改为npm的默认目录

    1. 找到npm&#39目录的路径:

      npm config get prefix

对于许多系统,这将是/usr/local

警告:如果显示的路径只是/usr,请切换到选项2 ,否则您将失去权限。

  1. 将npm目录的所有者更改为当前用户的名称(您的用户名):

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

  2. 这会更改npm和其他一些工具(lib/node_modulesbinshare)使用的子文件夹的权限。

    • 选项2:将npm的默认目录更改为另一个目录

    有些时候您不想更改npm使用的默认目录的所有权(即/usr),因为这可能会导致一些问题,例如,如果您与其他用户共享系统。

    相反,您可以配置npm以完全使用其他目录。在我们的例子中,这将是我们的主文件夹中的隐藏目录。

    1. 为全局安装创建目录:

      mkdir ~/.npm-global

    2. 配置npm以使用新目录路径:

      npm config set prefix '~/.npm-global'

    3. 打开或创建~/.profile文件并添加以下行:

      export PATH=~/.npm-global/bin:$PATH

    4. 返回命令行,更新系统变量:

      source ~/.profile

    5. 测试:全局下载包,但不使用sudo

      `npm install node-g.raphael --save`
      

      代替步骤2-4,您可以使用相应的ENV变量(例如,如果您不想修改~/.profile):

      NPM_CONFIG_PREFIX=~/.npm-global
      
      • 选项3:使用包管理器来处理此问题。

      如果您在Mac OS上重新安装Node,则可以使用Homebrew程序包管理器完全避免此问题。 Homebrew使用正确的权限设置开箱即用。

      brew install node

      我希望这会有所帮助

答案 1 :(得分:1)

我使用:

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

答案 2 :(得分:0)

通过运行以下命令为我解决此问题。

sudo npm install -g @ angular / cli

能够安装角铁。

然后尝试运行ng -v进行确认。

答案 3 :(得分:0)

我不建议您更改文件许可权并冒着系统混乱的风险(我已经做过,以后可能会后悔),我还是建议您在事后发现以下内容。

Resolving EACCES permissions errors when installing packages globally

答案 4 :(得分:-1)

要在Mac / Linux上进行访问,只需使用此命令

sudo npm install -g {package_name}

你很好。