我运行 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
答案 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
答案 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 上):
mkdir .npm-global
。这将是所有全局 NPM 安装所在的新文件夹,而不是存在权限问题的默认 .npm。npm config set prefix /Users/your_user/.npm-global
vi ~/.profile
。如果您没有此文件,请先运行 touch ~/.profile
,然后运行 vi ~/.profile
。在最顶部写下 export PATH=/Users/your_user/.npm-global/bin:$PATH
。您也可以使用文本编辑器打开此文件(因为它是一个隐藏文件,请使用 SHIFT + CMD + . 来显示它)。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文件夹,这解决了我的问题!