Daily harvest
  • Introduction
  • First Chapter
  • vue初次尝试
  • Chrome Performance Tools
  • React
    • react摸索之context
    • ant design 自定义form双向绑定组件
  • Npm
    • 【译】如何防止权限错误
    • Npm-rebuild
  • 基础概念
    • my blind spot of console.log()
    • 从别人那儿新学到的关于 require 和 import 的隐藏知识
    • LRUCache.ts
    • foobar variables
  • Nodejs
    • 【译】使用JSON Web Tokens保护Node.js的RESTful Api
  • Tools
    • 新学到的linux命令
    • webstorm eslint8 报错
  • Python
    • Mac python 虚拟环境
  • Algorithm
    • LeetCode 第 1 题
Powered by GitBook
On this page
  • 方法一:用版本管理工具重装npm
  • 方法二:改变npm的默认安装目录

Was this helpful?

  1. Npm

【译】如何防止权限错误

Previousant design 自定义form双向绑定组件NextNpm-rebuild

Last updated 5 years ago

Was this helpful?

原文档:

当你全局安装依赖包的时候,如果遇到EACCES问题,请阅读此章节。

如果你改变npm的安装目录,你是可以防止这类问题发生的。你可以用两种方法解决此问题:

  1. 用版本管理工具重装npm (推荐)

  2. 手动改变npm的默认安装目录

方法一:用版本管理工具重装npm

这是解决权限问题的最好方法。这已经在中讲解了。在安装node版本管理工具之前,你不需要移除掉你当前版本的npm或者Node.js。

方法二:改变npm的默认安装目录

此方法暂不支持Windows系统,不过很快我们会针对Windows更新此章节。 为了尽可能的减少权限错误问题,你可以使用不同的目录来配置npm。在本事例中,就是指的你的主目录下的一个隐藏目录。

  1. 开始前需要备份你的电脑

  2. 创建一个存放全局安装模块的目录:

    makdir ~/.npm-global
  3. 配置npm使用此新目录:

    npm config set prefix '~/.npm-global'
  4. 打开或者创建~/.profile文件并且添加一行:

    export PATH=~/.npm-global/bin:$PATH
  5. 回到命令行,更新你的系统变量:

    source ~/.profile

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

npm i -g jshint

或者你如果不想用2-4步骤的话,你也可以使用相关的环境变量(比如:你不想更改~/.profile文件)

NPM_CONFIG_PREFIX=~/.npm-global

=========================分割线=========================

我使用的第二种方法,暂时高高兴兴的耍了。但是当我npm i npm -g后,npm -v发现还是之前的版本。。我&&#!@&#&*#,然后which npm发现也是~/.npm-global下的,这就奇怪了。。思来想去,想起来有一步骤source ~/.profile,哦,原来是么得生效,source一下果然是新版本了。 但是,后来又一想,第二种方法的根本不就是更改npm的prefix配置么,何必这么繁琐,于是把~/.profile文件删掉,把~/.npm-global目录删掉,把npm的prefix更改为之前的/usr/local,然后再-g安装,已经么得问题了,over。

得到教训:只知npm 命令,不知npm 配置,后续继续跟进更多配置。

小贴士:考虑到npx 如果你在用npm@5.2或者更高版本,探索npx作为运行全局命令的替代方法,尤其是当你只是偶尔需要一个命令的时候。可以看这一篇关于的优秀文章。

How to Prevent Permissions Errors
章节二
npx