node.js - 在 OSX 中安装 npm 模块时权限被拒绝

标签 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 ,但它并没有解决我的问题,仍然出现同样的错误。

如果有什么我可以添加来帮助解决这个问题,请告诉我。

最佳答案

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

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

  1. 找到 npm 目录的路径:

    npm config 获取前缀

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

    警告:如果显示的路径只是/usr,请切换到选项2,否则你会搞砸你的权限。

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

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

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

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

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

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

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

    mkdir ~/.npm-global

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

    npm 配置设置前缀 '~/.npm-global'

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

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

  4. 回到命令行,更新你的系统变量:

    source ~/.profile

测试:不使用 sudo 全局下载包。

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

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

NPM_CONFIG_PREFIX=~/.npm-global

选项 3:使用包管理器为您处理此问题。

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

brew 安装 Node

希望对你有帮助

关于node.js - 在 OSX 中安装 npm 模块时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47252451/

相关文章:

node.js - 在套接字 io 中定期向所有套接字发送

node.js - 更新我的node_modules中某个包的每个存在

npm - uglifyjs-webpack-plugin 安全漏洞

node.js - 如何在express-request-proxy Node 包中添​​加Redis配置

node.js - 我应该如何在 Mocha 单元测试中初始化 Mongoose 连接?

node.js - C9.IO - 调试失败 - 无法在端口 15400 上打开套接字,等待 1000 毫秒再重试

python - OSx 更新后如何修复损坏的 python 2.7.11

macos - 如何创建带有图标的一致的工具栏按钮

macos - Applescript 错误 -10810

javascript - esprima-6 npm 模块发生了什么?