npm学习笔记-修复npm权限问题

当你尝试安装一个全局包的时候,你可能会收到一个EACCES错误。这表明您没有npm用于存储全局包和命令的目录的写权限。
您可以使用下列任一方式来修复这个问题:
1. 修改npm默认目录的权限(许可)
2. 将npm的默认目录修改为其他目录
3. 使用包管理器安装一个节点(包管理器会帮你处理这些)

在继续之前,你应该先备份你的电脑。

方式1:修改npm默认目录的权限(许可)

1. 查询npm的路径:

Npm config get prefix

对于多数系统,路径是:/usr/local.

警告:如果路径显示/usr, 请使用方式2;否则你将把权限搞砸。

2. 将npm的目录的所忍者更改为当前用户(你的账号)

sudo chown -R $(shoami) $(npm config getprefix)/{lib/node_modules,bin,share}

上面的命令修改npm和其他工具使用的子文件夹的权限。

方式2:将npm的默认目录修改为其他目录

有些时候,你不想更改npm默认目录的所有者,因为那会导致某些问题,例如,你和其他人共享该系统。
你可以设置npm使用不同的目录。在我们的案例中,我们将使用一个主文件夹中的隐藏目录。

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

makdir ~/.npm-global

2. 配置npm使用新路径:

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

3. 打开或者新建一个~/.profile文件并添加下面这行:

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

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

source ~/.profile

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

npm install -g jshint

如果不用2~4步骤,你也可以使用环境变量(例如你不想修改~/.profile文件)

NPM_CONFIG_PREFIX=~/.npm-global

方式3:使用包管理器安装一个节点(包管理器会帮你处理这些)

如果你正在使用新安装了NPM的Mac OS系统,你可以使用Homebrew包管理器来避免权限问题。

brew install node

original: https://docs.npmjs.com/getting-started/fixing-npm-permissions

时间: 2024-11-13 09:45:50

npm学习笔记-修复npm权限问题的相关文章

(yii学习笔记)控制器权限控制

public function filters() { return array( 'accessControl', // per 'postOnly + delete', // ); } public function accessRules() { return array( array('allow', // allow all users to pe 'actions'=>array('index','view'), 'users'=>array('*'), ), array('all

nodejs学习笔记<五>npm使用

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题. 以下是几种常见使用场景: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用. 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用. npm是集成在node.js一并安装的.所以可以直接在命令行通过npm -v命令查看当前npm的版本号. npm的升级可以通过npm命令. npm install npm -g(仅用于window

node.js在windows下的学习笔记(3)---npm

1.什么是npm npm是Node.js的包管理器,它允许开发人员在Node.js的应用程序中创建,共享,重用模块.之前我们通过node的官网的安装程序安装了Node.js,那么npm就已经装好了的. 既然npm是Node.js的包管理器,那么什么是包呢? 包:包是一个文件夹,将模块封装起来,用于发布,更新,依赖管理,版本控制.你可以简单的把包理解成就是一个文件夹.package.json描述包的一些信息 模块:一个实现某些特定功能的文件,以实现模块化编程. 2.如何使用npm为node.js安

NPM学习笔记

一.包管理工具是什么 1.定义:就是将别人写好的很多js代码放在一起(粗略的理解),然后对其进行管理 这里所谓的包指的就是各种插件(例如:jquery/Vue--) 2.包管理工具的好处: 1.复用别人已经写好的代码 你不会为每个项目都写一个 jQuery.React 这样的东西,而是直接使用别人已经写好的. 传统做法是:去官方网站下载对应的 js 文件,然后放到自己项目的对应路径下,比如 /assets/js/ . 而现在有了 npm 和 yarn 这样的东西,99.9999 % 的开放获取的

Linux学习笔记——用户及权限详解

用户及权限详解    用户.组.权限 安全上下文(secure context): 权限: r   w   x  文件: r:可读,可以使用类似cat等命令查看文件内容: w:可写,可以编辑或删除此文件: X:可执行,exacutable,可以命令提示符下当作命令提交给内核运行:  目录: r:可以对此目录执行ls以列出内部的所有文件: w:可以在此目录创建文件: x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息: rwx: r--:只读 r-x:读和执行 ---:无权限

linux学习笔记二-----文件权限管理

一.分析文件权限(ln -s 文件名 快捷方式名 用来创建文件的快捷方式,下方ll查看信息时会在第一个字符处显示l) [[email protected] ~]$ ll total 4 drwxrwxr-x. 2 hjp hjp 4096 Jan 6 00:16 t drwxrwxr-x. 2 hjp hjp 6 Jan 5 20:44 testdir [[email protected] ~]$ 以drwxrwxr-x. 2 hjp hjp 4096 Jan 6 00:16 t为例1.d:表示

thinkinginjava学习笔记05_访问权限

Java中访问权限等级从大到小依次为:public.protected.包访问权限(没有关键词).private: 以包访问权限为界限,public.protected分别可以被任意对象和继承的对象访问,而包访问权限(未加关键词的类.方法等)则不能在包外被访问:在一个类中,不能出现相同类成员:在同一个包中,不可以出现相同类: public作为接口访问权限,将一些方法作为public,即将该方法作为接口,供其他程序调用:private权限下,除了包含该成员的类之外,其他任何类都无法访问该成员,用来

【MySQL学习笔记】MySQL权限表

MySQL权限表,控制用户对数据库的访问,存在mysql数据库中,由mysql_install_db初始化,包括user,db,host,tables_priv,columns_priv,procs_priv 1.user表,记录允许连接到服务器的账号信息,权限为全局级. 用户列(包括host,user,password,前二者为user表的联合主键). 权限列,描述用户权限,值为N or Y,默认值都为N,修改需要靠grant或update 安全列 n  两个ssl相关,用于加密,show v

学习笔记——Java中权限的有效范围

这里重点是默认权限(default)和保护权限(protected)的权限范围做了详细的分类,父类和子类所在包不同就会有所不同. 下图为:直接把子类放到与其他包中(friendly为默认权限) 测试如下:注:其中Test类为测试类,所在包为当前包 工程目录: Animal类的测试 Cat类的测试 Person3类的测试 Cat2类的测试 Person类的测试 Person1类的测试