试图

sudo npm install protractor -g

同样臭名昭著的错误/警告再次出现(谷歌搜索无效):

gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/dmitrizaitsev/.node-gyp/0.12.0"

似乎发生的情况是,在同一安装过程中,node version 0.12.0被一次又一次地下载和重建,尽管它是我机器上的当前 node 版本:

node -v
v0.12.0

问题:

  • 目录"/Users/dmitrizaitsev/.node gyp/0.12.0"实际上丢失了!为什么会有这样一个误导性的信息?

  • 为什么这个目录既不是在node v0.12.0年期间创建的,也不是在上一次使用node-gyp成功重建期间创建的?

  • (显然)我该如何防止这种情况发生?

我运行Mac OSX 10.8.5,如果这很重要的话.

推荐答案

使现代化有一个更好的方法——将npm的默认全局目录更改为用户子目录,您已经有了正确的权限,这样就不必首先干扰系统文件的权限或所有权.

按照中的建议

  1. 为全局安装创建目录:
mkdir ~/.npm-global
  1. 配置npm以使用新的目录路径:
npm config set prefix '~/.npm-global'
  1. 打开或创建一个~/.profile(或~/.bash_profile等)文件,并添加此行(在文件末尾):
export PATH=~/.npm-global/bin:$PATH
  1. 在命令行上,更新系统变量:
source ~/.profile

or source ~/.bash_profile

另见Sindre Sorhus的主题指南:https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md


现在我已经发现了问题所在:

该目录有错误的权限-它不是writable(这将是一个比"可访问"更好的错误消息).

由于它不可写,每次使用后都会使用并删除一个临时目录,这就是为什么整个下载必须一次又一次地运行.

解决方案是使用设置用户权限

sudo chown -R $USER <directory>

再也不要sudo npm岁了.

See here for more details

Node.js相关问答推荐

带有apache Couch-db和Nano的推荐引擎:过滤特定用户的视图

在函数上执行 toString 的Typescript 会产生奇怪的字符 (path_1, (0, Promise.writeFile))

Nestjs重写子类dto nodejs中的属性

Nestjs swc 错误:找不到模块项目路径/src/app.module

编写动态创建的 YAML - 为生态系统创建 Docker compose 文件(使用 js-yaml)

TS[2339]:类型 '() => Promise<(Document & Omit) | 上不存在属性空>'

使用NodeJS通过服务账号列出Google Workspace用户

mongoose 7.0.3 使用运算符 $and 严格搜索日期

结合后端(Express)和前端(Angular)路由

使用react 组件加载特定 DIV 而无需重新加载整个页面

如何从哪个应用程序用户中找到在 Firebase 身份验证中进行身份验证的用户

多个 Axios 请求合并

错误:无法检测到网络(event="noNetwork",code=NETWORK_ERROR,version=providers/5.6.8)

类 WebSwapCGLLayer 在 Mac OS X /System 和 node_modules 中都实现了

等价于 Node.js 的 Rails 控制台

create-react-app,安装错误(找不到命令)

Node.JS 中的基本 HTTP 身份验证?

如何在离线时安装 npm 包?

当我try 向我的 S3 存储桶 (Node.js) 发送内容时,AWS 缺少凭证

如何阻止 babel 将this转换为undefined(并插入use strict)