可能导致错误Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
?
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR! { Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log
答案 0 :(得分:121)
更改您的文件权限..
首先检查谁拥有目录
ls -la /usr/local/lib/node_modules
它拒绝访问,因为node_module文件夹归root所有
drwxr-xr-x 3 root wheel 102 Jun 24 23:24 node_modules
因此需要通过将root更改为您的用户来进行更改,但首先在下面运行命令以检查当前用户How do I get the name of the active user via the command line in OS X?
id -un
OR
whoami
然后更改所有者
sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
答案 1 :(得分:21)
尝试在您尝试的任何命令之前附加 sudo 。
像这样: sudo npm install
在Linux / UNIX中使用带有命令的sudo通常会将您的权限提升到超级用户级别。在Windows中,超级用户帐户通常称为“管理员”。在Linux / Unix中,超级用户帐户通常命名为' root'。
root用户有权访问,修改或删除计算机上的几乎任何文件。普通用户帐户可以访问,修改或删除更少的文件。对普通帐户的限制可保护您的计算机免受未授权或有害程序或用户的侵害。某些进程要求您对通常无权访问的文件或文件夹执行操作。安装每个人都可以访问的程序就是这些操作之一。
在您的情况下,使用sudo运行安装命令会为您提供超级用户的权限,并允许您修改普通用户无权修改的文件。
答案 2 :(得分:8)
我尝试了@okanda给出的答案的解决方案,但对我而言不起作用。
但是,当我针对此线程中提到的几个文件夹执行此操作时,它工作得非常好:https://github.com/angular/angular-cli/issues/9676#issuecomment-464857493
sudo chown -R $USER /usr/local/lib/node_modules/
sudo chown -R $USER /usr/local/bin/
sudo chown -R $USER /usr/local/share/
答案 3 :(得分:8)
您可以通过Node版本管理器或Node安装程序安装npm。在docs中指出:
我们不建议使用Node安装程序,因为Node 安装过程将npm安装在本地目录中 权限,并且在运行npm软件包时可能会导致权限错误 全球。
由于拥有permission error,因此您可能是通过Node安装程序安装了npm,现在需要使用nvm(节点版本管理器)重新安装它。
幸运的是,这非常简单。您甚至不需要删除当前版本的npm或Node.js。
您需要做的就是
安装nvm。 对于OSX或Linux节点,请使用:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
这将在您的主目录中创建一个nvm文件夹。
然后
通过nvm安装npm和node.js。为此,只需致电
nvm install stable
现在,您可以在不使用sudo
或更改node_modules
文件夹中usr
的所有者的情况下全局安装软件包。
答案 4 :(得分:8)
在 ubuntu 中安装全局软件包时,在写入usr/bin
文件夹时需要特殊的写入权限。出于安全原因。
因此,每次安装全局软件包时,请使用:
sudo npm install -g [package-name]
对于您的具体情况,它将是:
sudo npm install -g typescript
答案 5 :(得分:7)
您需要做的就是将USER添加到/ local / lib的所有者中
@SendTo
答案 6 :(得分:6)
如果在授予权限后它仍然不起作用,请尝试运行以下命令:
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
source ~/.profile
最后使用此命令进行测试
npm install -g jshint
这不适用于Windows。
答案 7 :(得分:6)
为了最大程度地减少权限错误的可能性,可以将npm配置为使用其他目录。在此示例中,您将在主目录中创建并使用一个隐藏目录。
备份计算机。
在命令行的主目录中,为全局安装创建目录:
mkdir ~/.npm-global
配置npm以使用新的目录路径:
npm config set prefix '~/.npm-global'
在您喜欢的文本编辑器中,打开或创建一个~/.profile
文件并添加以下行:
export PATH=~/.npm-global/bin:$PATH
在命令行上,更新系统变量:
来源~/.profile
要测试新配置,请在不使用sudo的情况下全局安装软件包
答案 8 :(得分:6)
您似乎遇到了权限问题。如果您正在安装npm-packages
,那么在尝试全局安装软件包时可能会出现EACCES
错误。这意味着您无权写入npm
用于存储全局包和命令的目录。
尝试运行命令:sudo chmod u+x -R 775 ~/.npm
和sudo chown $USER -R ~/.npm
,或者您可以使用npm
运行任何sudo
命令,这样可以解决您的问题。
如果要在本地安装npm-package
,那么您应该在本地项目目录中,并且可以尝试运行sudo npm install <pkg-name>
命令来安装所需的包。使用sudo
的目的是它将更改您的所有者权限,以便您可以授权当前用户运行npm
命令。
我建议您查看https://docs.npmjs.com/getting-started/fixing-npm-permissions
答案 9 :(得分:5)
如果您在Mac上遇到此问题。请按照以下步骤
使用以下命令首先检查谁是该文件的所有者
ls -la /usr/local/lib/node_modules
您会在下面找到一些文件,其中之一在下面
drwxr-xr-x 3根轮768 5月29日02:21 node_modules
您已经注意到上面的文件是根用户拥有的,因为要进行内部更改,您需要更改路径的所有者。
您可以通过此命令使用检查谁是当前用户
id -un (in my case user is yamsol)
然后您可以通过调用此命令进行更改(只需用ownerName替换您的用户名)
sudo chown -R ownerName: /usr/local/lib/node_modules
在我的情况下,您知道用户是“ yamsol”,我将以这种方式调用此命令
sudo chown -R yamsol: /usr/local/lib/node_modules
就这样。
答案 10 :(得分:4)
请注意所有更改 / usr / local 下所有目录的所有者的响应 基本上,不要弄乱linux系统!!!
我认为最好的方法是使用您自己的文件夹找到所有全局软件包:https://www.competa.com/blog/how-to-run-npm-without-sudo/
答案 11 :(得分:4)
发生这种情况是由于npm
无法在运行中本地访问全局node_modules
目录
sudo chown -R Name: /usr/local/lib/node_modules
例如
sudo chown -R developerayo: /usr/local/lib/node_modules
解决了该问题,现在您可以运行再次运行的命令。
答案 12 :(得分:4)
使用此命令以sudo用户身份安装npm
:
sudo npm install -g create-react-app
而不是 npm install -g create-react-a pp。
答案 13 :(得分:3)
工作 100%
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
答案 14 :(得分:3)
类似于POsha的回答,但这对我在ubuntu 19上起作用了
sudo npm i -g ngrok --unsafe-perm=true --allow-root
通过此链接
答案 15 :(得分:3)
sudo chown -R $ USER / usr / local / lib / node_modules
答案 16 :(得分:3)
我能够在Mac中使用以下内容解决此问题。
sudo npm install -g @ aws-amplify / cli --unsafe-perm = true
答案 17 :(得分:2)
经过长时间的研究,我了解到Mac OS不需要安装角度cli,只需使用sudo npm install -g @angular/cli
,您的终端就会提示输入密码,然后继续安装cli。它对我有用。
答案 18 :(得分:2)
如果您正在运行Linux(即Arch)
# npm -g install packageName
默认情况下,此命令将软件包安装在/ usr / lib / node_modules / npm下,并且需要root特权。
要允许当前用户安装全局软件包,请设置npm_config_prefix
环境变量。 npm和yarn都使用它。
~/.profile
PATH="$HOME/.node_modules/bin:$PATH"
export npm_config_prefix=~/.node_modules
重新登录或更新更改来源。
您还可以为--prefix
指定npm install
参数。但是,不建议这样做,因为每次安装全局软件包时都需要添加它。
$ npm -g install packageName --prefix ~/.node_modules
因此您不必对文件夹进行渗透
答案 19 :(得分:2)
使用 'sudo npm install xyz' 。
答案 20 :(得分:2)
仔细阅读:
https://ionicframework.com/docs/developing/tips#resolving-permission-errors
sudo chown -R $(whoami) /usr/local/{lib/node_modules,bin,share}
sudo chown -R $(whoami) ~/.npm ~/.npmrc
答案 21 :(得分:1)
我正在尝试安装react expo,除了sudo外,我还必须添加--unsafe-perm
像这样。这样可以解决我的问题
let options_ : any = {
observe: "response",
responseType: "blob",
headers: new HttpHeaders({
"Accept": "application/json"
})
};
答案 22 :(得分:1)
Linux 用户的简单解决方案,只需在您为 npm 运行的任何命令前添加 sudo
答案 23 :(得分:1)
以下命令对我有用:
sudo npm install -g appium --unsafe-perm=true --allow-root
答案 24 :(得分:1)
brew 卸载节点
<块引用>brew 安装节点
<块引用>sudo npm install -g "your_package" --unsafe-perm=true --allow-root
希望这对某人有帮助
答案 25 :(得分:1)
仅对此提供帮助:
sudo chown -R ownerName: /usr/local/lib/node_modules
答案 26 :(得分:1)
您可以更改所有者,也可以只在命令之前使用sudo
sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
-----更改所有者
或
sudo sudo npm install -g json-server
就是这样。
答案 27 :(得分:1)
对于使用上述解决方案后仍然无法解决问题的人。试试这个
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
那应该成功了,加油!
答案 28 :(得分:1)
只需在npm命令之前添加“ sudo”。就是这样。
答案 29 :(得分:1)
好像您尝试在全局而非本地安装npm软件包,如man npm install
所述:
-g 或-global 参数将导致npm在全局而非本地安装软件包。
通常,当您设置一个npm项目(可能还有许多其他项目)时,将包安装在Node.js全局模块(/ usr / local / lib / node_modules)上不是一个好主意,建议的调试日志。
使用-g
而不是使用--save
,它会自动将软件包另存为package.json
文件的依赖项:
赞:
$ npm install express-generator --save
$ cat package.json
{
"name": "first_app_generator",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "ivanleoncz",
"license": "MIT",
"dependencies": {
"express-generator": "^4.16.0"
}
}
但是正如提到的其他答案一样,如果您要使用-g
,则必须使用sudo
(,如果您的用户具有sudo特权:请参见/ etc / sudoers )时执行npm install express-generator -g
,但实际上,这不是一个好主意,可能会导致权限问题。
注意
有使用express-generator
选项安装-g
的说明,以使脚本express-cli.js
在系统路径上可用,但是您也可以使用位于本地的脚本如果您的npm项目是在node_modules
上
$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp
如果您不确定后果如何,如果出现类似 / usr / bin / env:“节点”:没有此类文件或目录的消息,请安装
nodejs-legacy
(Debian / Ubuntu)
恕我直言,使用-g
(也使用sudo
)就像重磅炸弹。
有关更多信息:
答案 30 :(得分:1)
我用过sudo,但是并没有解决问题, 我已通过更改node_modules文件夹权限
解决了该问题sudo chmod -R 777 node_modules
如果您希望为所有用户/组设置权限,则可以用其他任何代码替换777。
答案 31 :(得分:0)
如果有人想让用户像 root 用户一样拥有访问权限,请查看此 https://support.apple.com/en-us/HT204012
如果用户帐户是帐户的所有者,这应该是最好的方法
答案 32 :(得分:0)
解决此问题的最佳方法(因为解决方案可能因设备而异)是仔细阅读错误,以确定哪个文件夹需要 write
访问权限。
就我而言,我必须授予 /usr/local/lib
和 /usr/local/bin
权限。
答案 33 :(得分:0)
您需要超级用户级别的许可才能安装React。在Linux / Unix中,超级用户帐户通常称为“ root”。
要获得超级用户特权,只需在终端上运行以下命令:
sudo i
然后只需运行命令以安装React:
npm install -g create-react-app
答案 34 :(得分:0)
sudo chown -R $USER /home/bereket/.nvm/versions/node/v8.9.1/lib/node_modules
和
sudo chown -R $USER /usr/local/lib/node_modules/
将v8.9.1
替换为您使用的节点版本。
答案 35 :(得分:0)
在usr目录中更改bin目录的权限对我来说很有效。
cd .. && cd .. && sudo chmod 777 ./bin /
答案 36 :(得分:0)
对于linux / ubuntu,如果命令
npm install -g <package_name>
npm WARN deprecated superagent@4.1.0: Please note that v5.0.1+ of superagent removes User-Agent header by default, therefore you may need to add it yourself (e.g. GitHub blocks requests without a User-Agent header). This notice will go away with v5.0.2+ once it is released.
npm ERR! path ../lib/node_modules/<package_name>/bin/..
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall symlink
npm ERR! Error: EACCES: permission denied, symlink '../lib/node_modules
/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'
npm ERR! { [Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>']
npm ERR! cause:
npm ERR! { Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'symlink',
npm ERR! path: '../lib/node_modules/<package_name>/bin/..',
npm ERR! dest: '/usr/local/bin/ionic' },
npm ERR! stack:
npm ERR! 'Error: EACCES: permission denied, symlink \'../lib/node_modules/ionic/bin/ionic\' -> \'/usr/local/bin/ionic\'',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'symlink',
npm ERR! path: '../lib/node_modules/<package-name>/bin/<package-name>',
npm ERR! dest: '/usr/local/bin/<package-name>' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).
npm ERR! A complete log of this run can be found in:
npm ERR! /home/User/.npm/_logs/2019-07-29T01_20_10_566Z-debug.log
修复:以root权限安装
sudo npm install <package_name> -g
答案 37 :(得分:0)
我发现webpack模块存在类似问题。我的解决方案-删除node_modules文件夹rm -rf node_modules并在不使用sudo的情况下运行npm i-安装应该可以。
答案 38 :(得分:0)
我可以通过安装Program type already present: android.support.v4.os.ResultReceiver$MyResultReceiver
,然后将节点设置为最新版本来解决此问题。
nvm
安装nvm
(有关最新版本,请访问nvm.sh)curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
v10.12.0
默认-> v10.12(-> v10.12.0)
节点->稳定(-> v10.12.0)(默认)
稳定-> 10.12(-> v10.12.0)
…
nvm ls
nvm与npm config“前缀”选项不兼容:当前设置为“”
nvm use v10.12
按照上述命令操作后,您将能够在Ubuntu中安装react / angular。
答案 39 :(得分:-1)
在我的情况下,它可以正常工作,即我想要npm链接,所以当我点击sudo npm链接时,它可以工作
sudo npm install
因为sudo授予您超级用户级别的权限。 超级用户帐户通常称为“管理员”。在Linux / Unix中,超级用户帐户通常称为“ root”。
root用户有权访问,修改或删除计算机上几乎所有文件。普通用户帐户可以访问,修改或删除更少的文件。普通帐户的限制可保护您的计算机免受未经授权或有害的程序或用户的侵害。