错误:EACCES:使用npm安装sth时,权限被拒绝,mkdir

时间:2019-05-01 14:43:41

标签: node.js npm

每次我尝试使用npm(在这种情况下为Electronic-packager)安装某些东西时,都会遇到此错误。我该如何解决这个问题?

我已经尝试通过chmod更改.npm的权限来授予我访问权限,但是它不起作用,我还尝试了其他节点版本(通过nvm安装:node -v 12.1.0; npm- v 6.9.0),它也无法正常工作。

$ npm install electron-packager --save-dev
npm ERR! path /Users/felixmoser/.npm/_cacache/index-v5/15/a0
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir
npm ERR! Error: EACCES: permission denied, mkdir '/Users/felixmoser/.npm/_cacache/index-v5/15/a0'
npm ERR!  [OperationalError: EACCES: permission denied, mkdir '/Users/felixmoser/.npm/_cacache/index-v5/15/a0'] {
npm ERR!   cause: [Error: EACCES: permission denied, mkdir '/Users/felixmoser/.npm/_cacache/index-v5/15/a0'] {
npm ERR!     errno: -13,
npm ERR!     code: 'EACCES',
npm ERR!     syscall: 'mkdir',
npm ERR!     path: '/Users/felixmoser/.npm/_cacache/index-v5/15/a0'
npm ERR!   },
npm ERR!   isOperational: true,
npm ERR!   stack: 'Error: EACCES: permission denied, mkdir ' +
npm ERR!     "'/Users/felixmoser/.npm/_cacache/index-v5/15/a0'",
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/Users/felixmoser/.npm/_cacache/index-v5/15/a0',
npm ERR!   parent: 'electron-packager'
npm ERR! }
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!     /Users/felixmoser/.npm/_logs/2019-05-01T14_11_08_530Z-debug.log

我实际上不知道我现在还应该尝试什么,希望你们能帮助我解决这个问题!

5 个答案:

答案 0 :(得分:2)

更改 .npm 文件夹的所有权, 就我而言,我无法找出解决方案,所以我使用了

sudo chown -R $(whoami) ~/.npm

答案 1 :(得分:1)

只需将~/.npm文件夹的所有者更改为您自己:

sudo chown -R felixmoser ~/.npm

您需要输入密码才能呼叫sudo

答案 2 :(得分:0)

尝试使用 --global-g 全局安装软件包时,也存在类似的权限问题。我知道这不是您当前的问题,但我想在这里添加它,因为在进行全局安装时使用 Google 搜索 EACCESS 的人也可能会遇到这个问题。

有些人更改了系统文件夹权限,允许非 root 用户在系统文件夹中写入内容,但这是他们在文档中推荐的内容:

https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally/

备份您的计算机(包括在这里是因为文档也提到了,但我觉得过于谨慎)

然后执行:

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

编辑您的~/.profile

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

然后调用它

source ~/.profile

要测试您的新配置,请在不使用 sudo 的情况下全局安装软件包:

npm install -g jshint

或者不修改 ~/.profile 只使用相应的 ENV 变量(但要使其永久化,您无论如何都必须修改配置文件)

NPM_CONFIG_PREFIX=~/.npm-global

答案 3 :(得分:-1)

只需添加sudo 因此,而不是npm install electron-packager --save-dev 设为sudo npm install electron-packager --save-dev

答案 4 :(得分:-2)

请考虑至少在用户所在位置内运行说明,例如:

/home/myuser/

express HelloWorld --view=pug