错误:EACCES:权限被拒绝

时间:2016-07-12 08:41:18

标签: node.js lodash

我运行 npm install lodash 但它会抛出错误:EACCES:权限被拒绝错误。我知道这是权限问题,但据我所知,本地安装节点模块不需要sudo权限。如果我用sudo运行它,它将被安装在〜/ node_modules文件夹中。 drwxrwxr-x 是现有文件夹的文件权限。我无法弄清楚可能出现的问题。

以下是错误消息。

npm ERR! tar.unpack untar error /home/rupesh/.npm/lodash/4.13.1/package.tgz
npm ERR! Linux 3.13.0-88-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "lodash"
npm ERR! node v4.3.1
npm ERR! npm  v2.14.12
npm ERR! path /home/rupesh/node_modules/lodash
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR!      'FSReqWrap.oncomplete (fs.js:82:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/rupesh/Desktop/es6/npm-debug.log

27 个答案:

答案 0 :(得分:28)

我在全球范围内安装webpack服务器时遇到同样的问题,使用this Url中的步骤解决了我的问题,我的工作对你而言。

上面提到的步骤: 在开始之前备份计算机。

  

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

     

<强> 1。 mkdir ~/.npm-global

     

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

     

<强> 2。npm config set prefix '~/.npm-global'

     

打开或创建〜/ .profile文件并添加以下行:

     

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

     

返回命令行,更新系统变量:

     

<强> 4。source ~/.profile

测试:在不使用sudo的情况下全局下载 包。

npm install -g jshint

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

NPM_CONFIG_PREFIX=~/.npm-global

答案 1 :(得分:20)

此命令解决了该问题。它对我有用:

sudo npm install -g --unsafe-perm=true --allow-root

答案 2 :(得分:7)

使用 npm init 创建 package.json 解决了我的问题。

答案 3 :(得分:6)

从我在你发布的日志中看到的内容:

npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',

目录/home/rupesh/node_modules/没有必要的权限来创建目录,所以运行chown -r rupesh:rupesh /home/rupesh/node_modules/这应该解决它。

答案 4 :(得分:4)

FWIW我有相同的症状,但有不同的包装。创建package.json并运行npm init NOT 解决了我的问题。

在这个系统上,显然使用root权限创建了此位置的新文件夹。在npm install期间,会创建新文件夹。这导致npm安装失败,即使使用sudo也是如此。

解决方案是在没有root umask的不同位置运行npm install app

答案 5 :(得分:4)

我在Linux上遇到了问题。我写了

chown -R myUserName ./* 

在我的项目文件夹中。

答案 6 :(得分:4)

一个相关问题:

浪费了3天,持续了几天。

在AWS EC2计算机上,以下工作正常:

sudo chown -R $(whoami) /home/ubuntu/.cache
sudo chown -R $(whoami) /home/ubuntu/.config
sudo chown -R $(whoami) /home/ubuntu/.local
sudo chown -R $(whoami) /home/ubuntu/.npm
sudo chown -R $(whoami) /home/ubuntu/.pm2

希望有帮助。

答案 7 :(得分:2)

首先在root上没有-g(全局)安装。尝试使用-g(全局)后,它对我有用。

答案 8 :(得分:2)

它没有others(r-x)的写权限。试试

chmod a+w <folder>

并重复。

答案 9 :(得分:2)

这立即解决了我的问题-mac Mojave 10.14.6-PhpStorm。

  

未处理的拒绝错误:EACCES:权限被拒绝,mkdir   '/Users/myname/.npm/_cacache/index-v5/fb/5a'

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

原始帖子: https://stackoverflow.com/a/50639828

答案 10 :(得分:1)

  

执行这些命令,问题将得到解决!

sudo chmod -R 777 /usr/local/bin
sudo chmod -R 777 /usr/local/lib/node_modules

答案 11 :(得分:1)

尝试使用以下命令将所有权限授予您的项目文件夹

sudo chmod -R 777 /yourProjectDirectoryName

运行

sudo npm install lodash

答案 12 :(得分:1)

我通过更改npm目录的权限解决了此问题。我去了npm全局目录,它位于

/home/<user-name>

我通过输入此命令进入该目录

cd /home/<user-name>

,然后通过输入此命令来更改.npm文件夹的权限。

sudo chmod -R 777 ".npm"

对我来说,它就像是一种魅力。但这存在一个安全漏洞,即您的全局软件包目录可用于所有级别。

答案 13 :(得分:0)

我在运行 Bigsur 11.4 的 Mac 上尝试了上面的一些答案,但没有奏效。但有效的是 npmjs docs 网站上发布的以下说明。 https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

答案 14 :(得分:0)

sudo chown -R $(whoami) /usr/local/bin

创建 /usr/local/bin 文件夹的当前用户所有者。这个文件夹的权限是个问题。

答案 15 :(得分:0)

尝试过任何方法后,我关注了 NPM 的这个视频。 为我顺利解决了! https://www.youtube.com/embed/bxvybxYFq2o

说明如下(在 Mac 上):

  1. 在终端中,在您的用户目录中,创建此文件夹 mkdir .npm-global。这将是所有全局 NPM 安装所在的新文件夹,而不是存在权限问题的默认 .npm。
  2. cd .npm-global/
  3. 运行npm config set prefix /Users/your_user/.npm-global
  4. 为系统设置路径以了解在哪里可以找到包:运行 vi ~/.profile。如果您没有此文件,请先运行 touch ~/.profile,然后运行 ​​vi ~/.profile。在最顶部写下 export PATH=/Users/your_user/.npm-global/bin:$PATH。您也可以使用文本编辑器打开此文件(因为它是一个隐藏文件,请使用 SHIFT + CMD + . 来显示它)。
  5. 返回终端,在 /.npm-global 文件夹中,运行 source ~/.profile

您现在应该准备好了。

答案 16 :(得分:0)

以管理员身份打开 CMD(在本例中为 Windows WSl)。我使用的是 NodeJS 版本 14.15.1

答案 17 :(得分:0)

如果遇到如下错误

Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/<PackageName>/vendor'

我建议使用以下命令安装全局软件包

sudo npm install -g <PackageName> --unsafe-perm=true --allow-root

答案 18 :(得分:0)

我们需要使用以下方式授予对该文件夹的写权限:

sudo chmod 777 path-to-directory

该项目中的目录路径为(/ home / ubuntu / blog / server)

答案 19 :(得分:0)

节点建议执行以下操作:

 sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config

如果执行

npm config

您将看到类似的内容

│                   npm update check failed                   │
│             Try running with sudo or get access             │
│            to the local update config store via             │
│ sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config │

对我有用。

答案 20 :(得分:0)

我尝试了大多数这些建议,但没有一个起作用。然后我运行npm clean-install,它解决了我的问题。

答案 21 :(得分:0)

只需将全局node_modules目录的所有者更改为您的用户即可

sudo chown -R $USER:$GROUP /usr/local/lib/node_modules

答案 22 :(得分:0)

在Windows上,最终导致该端口已被IIS使用。

停止IIS(右键单击退出),解决了该问题。

答案 23 :(得分:0)

尝试使用此方法: 在命令行的主目录中,创建用于全局安装的目录:

mkdir ~/.npm-global

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

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

在您喜欢的文本编辑器中,打开或创建〜/ .profile文件并添加以下行:

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

在命令行上,更新系统变量:

source ~/.profile

在不使用sudo的情况下测试全局安装软件包,希望对您有所帮助

答案 24 :(得分:0)

LUBUNTU 19.10 /运行相同的问题:$ npm start

转储: 错误:EACCES:权限被拒绝,打开“ /home/simon/xxx/pagebuilder/resources/scripts/registration/node_modules/.cache/@babel/register/.babel.7.4.0.development.json”     在Object.fs.openSync(fs.js:646:18)     在Object.fs.writeFileSync(fs.js:1299:33)     保存时(/home/simon/xxx/pagebuilder/resources/scripts/registration/node_modules/@babel/register/lib/cache.js:52:15)     在_combinedTickCallback(内部/进程/next_tick.js:132:7)     在process._tickCallback(内部/进程/next_tick.js:181:9)     在Function.Module.runMain(module.js:696:11)     在对象。 (/home/simon/xxxx/pagebuilder/resources/scripts/registration/node_modules/@babel/node/lib/_babel-node.js:234:23)     在Module._compile(module.js:653:30)     在Object.Module._extensions..js(module.js:664:10)     在Module.load(module.js:566:32)

好像我的默认用户(管理员)对节点模块目录没有权限。

这为我修复了它!

$ sudo chmod a+w node_modules -R ## from project root

答案 25 :(得分:0)

这是GNU / Linux(Debian)用户的解决方案(用用户名替换 USERNAME ):

sudo chown -R $USER:$(id -gn $USER) /home/USERNAME/.config

答案 26 :(得分:-1)

删除dist文件夹,这解决了我的问题!