在 OSX 中安装 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

我试过 这个解决方案,但它不能解决我的问题,仍然得到相同的错误。

如果有什么我能帮忙解决的,请告诉我。

131387 次浏览

修正 npm 权限上看到这个,很有帮助,也许你也可以试一试。

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

  1. 找到 npm 目录的路径:

    npm config get prefix

    For many systems, this will be /usr/local.

    警告 : 如果显示的路径仅仅是 /usr,切换到 选择二,否则您将搞乱您的权限。

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

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

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

Option 2: Change npm's default directory to another directory

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

相反,您可以将 npm 配置为完全使用不同的目录。在我们的示例中,这将是主文件夹中的一个隐藏目录。

  1. 为全局安装建立一个目录:

    mkdir ~/.npm-global

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

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

  3. Open or create a ~/.profile file and add this line:

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

  4. Back on the command line, update your system variables:

    source ~/.profile

Test : 在不使用 sudo的情况下全局下载包。

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

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

NPM_CONFIG_PREFIX=~/.npm-global

Option 3: Use a package manager that takes care of this for you.

如果要在 Mac OS 上重新安装 Node,可以使用 Homebrew包管理器完全避免这个问题。Homebrew使用正确的权限设置开箱即用的内容。

brew install node

希望这个能帮上忙

通过运行以下命令为我修复问题。

Sudo npm install-g@angle/cli

能够安装棱角。

那就试试运行 ng-v 来确认。

我用:

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

要访问 Mac/Linux,只需使用以下命令

sudo npm install -g {package_name}

你可以走了。

与其更改您的文件权限并冒着在系统中造成混乱的风险(我已经做了什么,可能会在以后的日子里后悔) ,我是否可以建议以下我在事后发现的东西。

在全局安装包时解决 EACCES 权限错误