错误:EACCES:权限被拒绝

xru*_*ics 62 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
Run Code Online (Sandbox Code Playgroud)

San*_*shi 41

此命令可解决此问题.它对我有用:

sudo npm install -g --unsafe-perm=true --allow-root
Run Code Online (Sandbox Code Playgroud)

  • 错误 ```js ~ $ npm install -g --unsafe-perm=true --allow-root npm 错误!无法读取未定义的属性(读取“名称”)npm ERR!可以在以下位置找到此运行的完整日志:npm ERR!/data/data/com.termux/files/home/.npm/_logs/2022-10-09T09_45_11_327Z-debug-0.log ``` (2认同)

Vis*_*tel 37

我在全球范围内安装webpack服务器时遇到同样的问题,使用此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
Run Code Online (Sandbox Code Playgroud)

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

NPM_CONFIG_PREFIX=~/.npm-global
Run Code Online (Sandbox Code Playgroud)


che*_*zeh 18

sudo chown -R $(whoami) /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

使当前用户成为该/usr/local/bin文件夹的所有者。该文件夹的权限是问题所在。

  • 无意冒犯,但这听起来是个坏主意。您的常规用户帐户不应是“/usr/local/bin”的所有者。它应该由超级用户帐户拥有。 (3认同)

Raj*_*hel 13

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

sudo chmod -R 777 /yourProjectDirectoryName
Run Code Online (Sandbox Code Playgroud)

运行

sudo npm install lodash
Run Code Online (Sandbox Code Playgroud)

  • “对文件或目录设置777权限意味着所有用户都可读、可写和可执行,可能会带来巨大的安全风险。” -https://linuxize.com/post/what-does-chmod-777-mean/ (8认同)
  • 你甚至可能不需要 777。对我来说,问题只是 # 太低了。(775 修复了它。) (2认同)

Jua*_*dor 11

它没有others(rx) 的写权限。试试

chmod a+w <folder>
Run Code Online (Sandbox Code Playgroud)

并重复。

  • `chown` 没有`-r` 选项来防止必须在`node_modules` 中的每个文件夹上使用它吗? (2认同)

xru*_*ics 9

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


小智 9

我在Linux上有问题。我写

chown -R myUserName ./* 

在我的项目文件夹中。

  • 非常不推荐。这会涉及到所有目录,并删除其中任何目录的根权限。如果需要将某些东西设置为root,这会破坏您的当前配置。 (3认同)
  • 我同意@PatrickDaSilva。这搞乱了我的整个服务器.. (3认同)
  • @PatrickDaSilva 将用户主目录中的用户自己的文件的所有权更改为用户没有任何害处。事实上通常这就是你想要的: chown -R $USER ~/ (3认同)

小智 9

这立即解决了我的问题 - 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
Run Code Online (Sandbox Code Playgroud)

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


Man*_*ddy 9

一个相关问题:

浪费了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
Run Code Online (Sandbox Code Playgroud)

希望有帮助。

  • 感谢@Manohar Reddy Poreddy,在尝试了很多解决方案后,这对我有用。 (2认同)

Sim*_*n P 7

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

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

看起来我的默认用户(管理员)没有节点模块目录的权限。

这为我修好了!

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


Nis*_*hah 7

如果您收到如下错误

Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/<PackageName>/vendor'
Run Code Online (Sandbox Code Playgroud)

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

sudo npm install -g <PackageName> --unsafe-perm=true --allow-root
Run Code Online (Sandbox Code Playgroud)


AJS*_*AJS 5

从我在您的日志中看到的内容,您发布了:

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',
Run Code Online (Sandbox Code Playgroud)

目录/home/rupesh/node_modules/没有创建目录所需的权限,所以运行chown -r rupesh:rupesh /home/rupesh/node_modules/它应解决它.


Ani*_*wal 5

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

/home/<user-name>
Run Code Online (Sandbox Code Playgroud)

我通过输入这个命令进入了这个目录

cd /home/<user-name>
Run Code Online (Sandbox Code Playgroud)

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

sudo chmod -R 777 ".npm"
Run Code Online (Sandbox Code Playgroud)

这对我来说就像一种魅力。但是这存在一个安全缺陷,即您的全局包目录可以被所有级别访问。

  • 为什么要允许全世界访问这个特定的文件夹? (2认同)