可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
What might be causing the error 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
回答1:
change your file permissions .. like this
first check who owns the directory
ls -la /usr/local/lib/node_modules
it is denying access because the node_module folder is owned by root
drwxr-xr-x 3 root wheel 102 Jun 24 23:24 node_modules
so this needs to be changed by changing root to your user but first run command below to check your current user How do I get the name of the active user via the command line in OS X?
id -un
OR
whoami
then change owner
sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
OR
sudo chown -R ownerName: /usr/local/lib/node_modules
OR
sudo chown -R $USER /usr/local/lib/node_modules
回答2:
To minimize the chance of permissions errors, you can configure npm to use a different directory. In this example, you will create and use a hidden directory in your home directory.
Back up your computer.
On the command line, in your home directory, create a directory for global installations:
mkdir ~/.npm-global
Configure npm to use the new directory path:
npm config set prefix '~/.npm-global'
In your preferred text editor, open or create a ~/.profile
file and add this line:
export PATH=~/.npm-global/bin:$PATH
On the command line, update your system variables:
source ~/.profile
To test your new configuration, install a package globally without using sudo
回答3:
All you need to do is to add USER to the owner of /local/lib
sudo chown -R $USER /usr/local/lib
回答4:
try appending sudo before whatever command you are trying.
like this : sudo npm install
Using sudo with a command in Linux/UNIX generally elevates your permissions to superuser levels. In Windows, the superuser account is usually called 'Administrator.' In Linux/Unix the superuser account is generally named 'root'.
The root user has permission to access, modify or delete almost any file on your computer. Normal user accounts can access, modify or delete many fewer files. The restrictions on a normal account protect your computer from unauthorized or harmful programs or users. Some processes require you to perform actions on files or folders you don't normally have permissions to access. Installing a program that everyone can access is one of these actions.
In your case, running the installation command with sudo gives you the permissions of the superuser, and allows you to modify files that your normal user doesn't have permission to modify.
回答5:
While installing global packages in ubuntu, you need special write permissions as you are writing to the usr/bin
folder. It is for security reasons.
So, everytime you install a global package, use:
sudo npm install -g [package-name]
For your specific case, it will be:
sudo npm install -g typescript
回答6:
I tried the solution of the answer given by @okanda but it didn't work for me.
However it worked perfectly when I did it for several folders like mentioned in this thread: 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/
回答7:
I was trying to install react expo and apart from sudo I had to add --unsafe-perm
like this. This resolves my Issue
sudo npm install -g expo-cli --unsafe-perm
回答8:
It looks like you're running into permission issues. If you are installing npm-packages
then it might possible that you are getting an EACCES
error when trying to install a package globally. This means you do not have permission to write to the directories npm
uses to store global packages and commands.
Try running commands: sudo chmod u+x -R 775 ~/.npm
and sudo chown $USER -R ~/.npm
or you can just run any npm
command with sudo
, that should get resolve your issue.
If you are installing an npm-package
locally, then you should be in your local project directory and can try running sudo npm install <pkg-name>
command to install required package. the purpose of using sudo
is that it will change your owner permissions so you can make your current user authorized to run npm
commands.
I'd recommend you to take a look at https://docs.npmjs.com/getting-started/fixing-npm-permissions
回答9:
Be careful with all responses that change the owner of all directories under /usr/local
Basically, don't mess the linux system!!!
I think that the best way is to use your own folder to locate all global packages: https://www.competa.com/blog/how-to-run-npm-without-sudo/
回答10:
Use this command to install npm
as the sudo user:
sudo npm install -g create-react-app
instead of
npm install -g create-react-a pp.
回答11:
If you are facing this issue on you Mac. Follow these steps
First checking who is owner of this file by using below command
ls -la /usr/local/lib/node_modules
you will find some file like below one of them is below
drwxr-xr-x 3 root wheel 768 May 29 02:21 node_modules
have you notice that above file is own by root, for make changes inside for you need to change owner ship of path.
you can use check who is current user by this command
id -un (in my case user is yamsol)
and then you can change by calling this command (just replace your user name with ownerName)
sudo chown -R ownerName: /usr/local/lib/node_modules
in my case as you know user is "yamsol" i will call this command in this way
sudo chown -R yamsol: /usr/local/lib/node_modules
thats it.
回答12:
Seems like you tried to install a npm package globally rather than locally, as the man npm install
describes:
The -g or --global argument will cause npm to install the package globally rather than locally.
Generally, when you are setting up a npm project (among many others that you could have), it's not a good idea to install packages on Node.js global modules (/usr/local/lib/node_modules), as your the debug log suggested.
Instead of using -g
, use --save
, which will automatically save the package as a dependency for your package.json
file:
Like this:
$ 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"
}
}
But as the other answers mentioned, if you're going to use -g
, you have to use sudo
(if your user has sudo privileges: see /etc/sudoers) when performing npm install express-generator -g
, but indeed, it's not a good idea, possibly causing permission problems.
NOTICE
There are instructions for installing express-generator
with -g
option, in order to have the script express-cli.js
available on the system path, but you can use the locally installed script as well, located at the node_modules
if your npm project:
$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp
If a message like /usr/bin/env: ‘node’: No such file or directory shows up, install nodejs-legacy
(Debian/Ubuntu)
IMHO, using -g
(also using sudo
) is like hic sunt dracones, if you are unsure of the consequences.
For further information:
- Creating NPM Package (npm init)
- Express.js Generator
回答13:
Simply you can change the owner or just use sudo before you command like this
sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
(change owner)
or
sudo npm install -g json-server
that's it.
回答14:
I was able to fix the issue using the following in mac.
sudo npm install -g @aws-amplify/cli --unsafe-perm=true
回答15:
For linux / ubuntu if the command
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
Fix : Install with root permissions
sudo npm install <package_name> -g
回答16:
You need the permission of superuser levels to install React. In Linux/Unix the superuser account is generally named 'root'.
To get superuser privilege just run the following command on your terminal:
sudo -i
and then simply run the command to install React:
npm install -g create-react-app
However, the reactjs team encourages us to use the following command instead of installing a global package.
npx create-react-app app_name
回答17:
You can install npm through Node version manager or a Node installer. In the docs it stated:
We do not recommend using a Node installer, since the Node
installation process installs npm in a directory with local
permissions and can cause permissions errors when you run npm packages
globally.
Since you have the permission error, you probably installed npm through a Node installer and now you need to reinstalled it with a nvm (node version manager).
Luckily, this is very simple. You do not even need to remove your current version of npm or Node.js.
All you need to do is
Install nvm.
For OSX or Linux Node use:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
This creates a nvm folder in your home directory.
Then
Install npm and node.js through nvm. To do so, just call
nvm install stable
Now you can install your package globally without using sudo
or changing the owner of node_modules
in usr
folder.
回答18:
Helped only this:
sudo chown -R ownerName: /usr/local/lib/node_modules
回答19:
For nvm users
sudo chown -R $USER /home/bereket/.nvm/versions/node/v8.9.1/lib/node_modules
and
sudo chown -R $USER /usr/local/lib/node_modules/
replace v8.9.1
with your node version you are using.
回答20:
I have used sudo, but it didnt solve the problem,
I have fixed the issue by changing the node_modules folder permission,
sudo chmod -R 777 node_modules
If you want you can replace 777 with any other code if you dont set the permission for all user/group.
回答21:
I was able to get rid of this issue by installing nvm
, then setting node to latest version.
- Install
nvm
using curl
(for latest version go to nvm.sh)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
- List available node versions
nvm ls
v10.12.0
default -> v10.12 (-> v10.12.0)
node -> stable (-> v10.12.0) (default)
stable -> 10.12 (-> v10.12.0)
…
- Choose which version of node to use
nvm use v10.12
nvm is not compatible with the npm config "prefix" option: currently set to ""
- Run this to unset the option:
nvm use --delete-prefix v10.12.0
After following the commands above, you will be able to install react/angular in Ubuntu.
回答22:
After long research i understood that nothing is required for mac OS to install angular cli just use sudo npm install -g @angular/cli
your terminal will prompt password enter your password it will proceed to install cli. It worked for me.