【问题标题】:npm ERR! code EACCESS by installing @angular/clinpm 错误!通过安装@angular/cli 编码 EACCESS
【发布时间】:2018-10-06 04:27:27
【问题描述】:

环境:

  • Ubuntu 16.04
  • node v8.11.1(安装包管理器)
  • npm v5.6.0

干净安装npm并尝试安装@angular/cli

npm install -g @angular/cli

我收到一个与 EACCESS 相关的错误,它可能与权限有关,因为它会随着 root 访问而消失。问题是不建议这样使用,那我该如何解决呢?

控制台错误

$ npm install -g @angular/cli
npm WARN checkPermissions Missing write access to /usr/lib/node_modules
npm ERR! path /usr/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!  { Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!   stack: 'Error: EACCES: permission denied, access \'/usr/lib/node_modules\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/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!     /home/user/.npm/_logs/2018-04-25T15_23_36_781Z-debug.log

文件 .npm/_logs/2018-04-25T15_23_36_781Z-debug.log

2566 warn checkPermissions Missing write access to /usr/lib/node_modules
2567 verbose stack Error: EACCES: permission denied, access '/usr/lib/node_modules'
2568 verbose cwd /opt/workspace/roscam-front
2569 verbose Linux 2.6.32-042stab120.19
2570 verbose argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "@angular/cli"
2571 verbose node v8.11.1
2572 verbose npm  v5.6.0
2573 error path /usr/lib/node_modules
2574 error code EACCES
2575 error errno -13
2576 error syscall access
2577 error Error: EACCES: permission denied, access '/usr/lib/node_modules'
2577 error  { Error: EACCES: permission denied, access '/usr/lib/node_modules'
2577 error   stack: 'Error: EACCES: permission denied, access \'/usr/lib/node_modules\'',
2577 error   errno: -13,
2577 error   code: 'EACCES',
2577 error   syscall: 'access',
2577 error   path: '/usr/lib/node_modules' }
2578 error Please try running this command again as root/Administrator.
2579 verbose exit [ -13, true ]

【问题讨论】:

  • 不推荐?是在错误中说的请尝试以 root/管理员身份再次运行此命令。这可能并不理想,但建议这样做。
  • 是的,这是一种误导。我想这将是默认的并且很容易通过这个问题,但是 npm 文档建议更改默认目录以防止权限错误

标签: node.js angular npm angular-cli npm-install


【解决方案1】:

解决这个问题的一个方法是改变 npm 的默认目录以使用不同的目录。

  1. 我们需要为全局安装创建一个目录,在这个例子中是在用户目录中:

    mkdir ~/.npm-global
    
  2. 我们配置 npm 使用新的目录路径:

    npm config set prefix '~/.npm-global'
    
  3. 打开或创建一个 ~/.profile 文件并添加以下行:

    export PATH=~/.npm-global/bin:$PATH
    
  4. 我们会更新您的系统变量:

    source ~/.profile
    

现在我们可以在不使用 root 权限的情况下通过全局安装包进行测试。

npm install -g jsonfile

避免所有这些步骤并修改 ~/.profile 的另一种选择是使用以下命令定义 ENV 变量(:

NPM_CONFIG_PREFIX=~/.npm-global

npm reference

【讨论】:

  • 第 3 步告诉Open or create a ~/.profile file - 你能解释一下如何执行这部分步骤吗?
【解决方案2】:

我也遇到了 EACCES 权限错误。我全新安装了 Ubuntu 18.04。 16.04版本可能差别不大。这一切都对我有用。希望这会有所帮助。

------------ 对你来说,你应该从这里申请这个代码

sudo apt-get install curl software-properties-common
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install nodejs
node -v
npm -v
npm init
whoami

which npm              # returned /usr/bin
npm config get prefix  # returned /usr
npm config set prefix /usr/bin
npm config get prefix
ls -la /usr/bin/npm    # has a symbolic link to ../lib/node_modules/npm/bin/npm-cli.js
sudo chown -R your_user /usr/bin/npm   # NOT /usr/bin or we lock out sudo too!!!!
sudo chown -R your_user app-folder/
ls -la /usr/bin/npm
npm init  # I was curious to see if this still works
npm install  # WORKS GREAT!!! No need for sudo now.:)

----------- 到那里

这是我安装上述系统后使用的用例。如果上述设置良好,您的也可以使用。

npm start # script
npm run start:prod  # works as well
npm i debug --save-dev     # works but need to install 'make'
sudo apt install build-essential
npm i debug --save-dev    # installed and launched successfully!

注意:如果您要安装 npm i debug --global 相反, 您可能仍然会收到 EACCES 权限错误,因为您的本地用户将无法访问文件系统中其他地方的 root 权限。这就是我们使用“更改所有权”的原因(即chown your_user:请参阅上面的代码)。

【讨论】:

猜你喜欢
  • 2018-02-18
  • 2021-03-15
  • 2023-03-29
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多