在 aws ec2 实例上安装 npm 抛出 EACCES

Lun*_*ape 7 amazon-web-services node.js

我已使用 ElasticBeanstalk 在 AWS 上创建了一个预配置的 node.js 实例,但该应用程序无法正常运行。所以我连接到实例并发现没有节点或角度cli,所以我手动安装了它们。然后我尝试在应用程序文件夹中运行 npm install 但失败,这是输出错误。

[ec2-user@ip current]$ npm install
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/tslib
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@ngx-loading-bar/core
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular/animations
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular/common
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular/compiler
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular/core
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular/forms
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular/http
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular/platform-browser
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular/platform-browser-dynamic
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular/router
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@ng-bootstrap/ng-bootstrap
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@ngx-loading-bar/http-client
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@ngx-loading-bar/router
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/bootstrap
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/ngx-mydatepicker
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/ngx-toastr
npm WARN checkPermissions Missing write access to /var/app/current/node_modules
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@ngx-loading-bar
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@angular
npm WARN checkPermissions Missing write access to /var/app/current/node_modules/@ng-bootstrap
npm WARN ng2-nouislider@1.7.7 requires a peer of nouislider@^9.0.0 || ^10.0.0 but none is installed. You must install peer dependencies yourself.

npm ERR! path /var/app/current/node_modules/tslib
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/var/app/current/node_modules/tslib'
npm ERR!  { Error: EACCES: permission denied, access '/var/app/current/node_modules/tslib'
npm ERR!   stack: 'Error: EACCES: permission denied, access \'/var/app/current/node_modules/tslib\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/var/app/current/node_modules/tslib' }
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/ec2-user/.npm/_logs/2018-02-15T00_53_02_546Z-debug.log
Run Code Online (Sandbox Code Playgroud)

我已经使用版本管理器 nvm 安装了节点,并尝试了对 nodejs 的 chown 权限:

drwxr-xr-x 16 nodejs nodejs   4096 Feb 15 00:25 node_modules
[ec2-user@ip current]$ cd node_modules/
[ec2-user@ip node_modules]$ ls -la
total 64
drwxr-xr-x 16 nodejs nodejs 4096 Feb 15 00:25 .
drwxr-xr-x  5 nodejs nodejs 4096 Feb 15 00:26 ..
drwxr-xr-x 11 nodejs nodejs 4096 Feb 15 00:25 @angular
drwxr-xr-x  5 nodejs nodejs 4096 Feb 15 00:25 bootstrap
drwxr-xr-x 13 nodejs nodejs 4096 Feb 15 00:25 core-js
drwxr-xr-x  6 nodejs nodejs 4096 Feb 15 00:25 font-awesome
drwxr-xr-x  4 nodejs nodejs 4096 Feb 15 00:25 ng2-nouislider
drwxr-xr-x  3 nodejs nodejs 4096 Feb 15 00:25 @ng-bootstrap
drwxr-xr-x  5 nodejs nodejs 4096 Feb 15 00:25 @ngx-loading-bar
drwxr-xr-x  4 nodejs nodejs 4096 Feb 15 00:25 ngx-mydatepicker
drwxr-xr-x  8 nodejs nodejs 4096 Feb 15 00:25 ngx-toastr
drwxr-xr-x  3 nodejs nodejs 4096 Feb 15 00:25 nouislider
drwxr-xr-x 14 nodejs nodejs 4096 Feb 15 00:25 rxjs
drwxr-xr-x  4 nodejs nodejs 4096 Feb 15 00:25 symbol-observable
drwxr-xr-x  3 nodejs nodejs 4096 Feb 15 00:25 tslib
drwxr-xr-x  4 nodejs nodejs 4096 Feb 15 00:25 zone.js
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我解决这个问题,我将不胜感激,谢谢。

Mar*_*ass 12

这是一个 LINUX 权限问题,您的 ec2 用户在该目录中没有写入权限。

我最近遇到了同样的问题,我的解决方法如下:

请注意,我不是 UNIX 专家,也不是 AWS 专家,所以也许有一个更好/更干净/更简单的解决方案来解决这个问题。

全局安装 Node 和 npm:

使用以下命令以 root 用户身份登录:sudo su并运行npm install

仅在ec2-user中安装 node 和 npm :

  • 使用以下命令以 root 用户身份登录:sudo su
  • 创建一组用户:sudo groupadd mygroup
  • 现在该组已存在,请向其中添加用户:
sudo usermod -a -G mygroup root
sudo usermod -a -G mygroup uc2-user
Run Code Online (Sandbox Code Playgroud)
  • 现在剩下的就是设置目录的权限:
sudo chgrp -R mygroup /path/to/the/directory
sudo chmod -R 777 /path/to/the/directory
Run Code Online (Sandbox Code Playgroud)
  • 现在您可以以 root 用户身份退出:exitnpm installec2-user 身份运行

  • `sudo usermod -a -G mygroup uc2-user` 需要更改为 `sudo usermod -a -G mygroup ec2-user` (3认同)