我正在try 安装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 get prefix

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

    WARNING:如果显示的路径仅为/usr,请切换到Option 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 config set prefix '~/.npm-global'

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

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

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

    source ~/.profile

Test:在不使用sudo的情况下全局下载软件包.

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

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

NPM_CONFIG_PREFIX=~/.npm-global

选项3:使用一个包管理器为您解决这个问题.

如果您正在Mac OS上重新安装Node,可以使用Homebrew package manager完全避免这个问题.Homebrew设置具有正确权限的开箱即用.

brew install node

我希望这有帮助

Node.js相关问答推荐

在Node JS中获取控制台选项卡标题

如何使用聚合管道交换键值对

如何在不丢失其他键的情况下解开子文档数组,然后反转该过程?

如何在ejs模板中使用循环显示多个结果?

MongoDB如果文档S的字段小于另一个字段,则将该字段加一

Node-Red Tasmota 错误:连接 ECONNREFUSED 192.168.77.21:1883

如何从 Mongo Atlas 触发器向 GCP PubSub 发出经过身份验证的请求

将 null 推入管道后,node.js 可写完成未发出

我如何在 Raku 的供应中注册不同的事件?

错误:无法为 /blog 收集页面数据并且在 object.fetch 处获取失败

如何通过node下载zip并直接解压zip?

tsc:当我上传 React+next js 和 node 项目时,在 heroku 找不到

NodeJS为exec设置环境变量

React Native ios build:找不到 node

JavaScript 异步编程:promise 与生成器

从 zip 文件在 AWS 中创建 lambda 函数

如何解决 Socket.io 404(未找到)错误?

如何从 findOneAndUpdate 方法中获取更新的文档?

当进程被杀死时,如何优雅地关闭我的 Express 服务器?

使用 Monit 而不是基本的 Upstart 设置有什么好处?