环境:
干净安装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 ]
答案 0 :(得分:1)
解决此问题的一个方法是更改npm的默认目录以使用其他目录。
我们需要为全局安装创建一个目录,在此示例中位于用户目录中:
mkdir ~/.npm-global
我们配置npm使用新的目录路径:
npm config set prefix '~/.npm-global'
打开或创建〜/ .profile文件并添加以下行:
export PATH=~/.npm-global/bin:$PATH
我们更新您的系统变量:
source ~/.profile
现在我们可以通过在不使用root权限的情况下全局安装软件包进行测试。
npm install -g jsonfile
另一个避免所有这些步骤并修改〜/ .profile的选项,它将通过使用以下命令定义一个ENV变量(:
NPM_CONFIG_PREFIX=~/.npm-global
答案 1 :(得分:0)
我也有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
:请参见代码中的上方)的原因。