Elastic Beanstalk 部署失败、权限被拒绝、mkdir

Luc*_*osa 8 amazon-ec2 amazon-web-services node.js amazon-elastic-beanstalk grpc

我正在尝试将 GRPC 依赖项添加到节点弹性 beanstalk 应用程序,但我的所有部署都失败了。一旦我从package.json我的部署工作中删除了 GRPC 依赖项。

错误是

ERROR: Failed to run npm install.  
> grpc@1.10.1 install /tmp/deployment/application/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp ERR! Pre-built binaries not installable for grpc@1.10.1 
and node@8.9.3 (node-v57 ABI, glibc) (falling back to source compile 
with node-gyp) 
node-pre-gyp ERR! Hit error EACCES: permission denied, mkdir 
'/tmp/deployment/application/node_modules/grpc/src/node' 
gyp ERR! configure error 
gyp ERR! stack Error: EACCES: permission denied
Run Code Online (Sandbox Code Playgroud)

我在另一个节点应用程序上遇到了这个问题,并且能够通过运行来解决它,npm --save-dev eb-fix-npm但它不适用于这个应用程序。我有时也会收到类似“无法创建符号链接,文件已经存在(释义)”的错误。

我也设置了这个文件来尝试解决这个问题。

 files:
   "/opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh" :
     mode: "000775"
     owner: root
     group: root
     content: |
       #!/bin/bash          
       function error_exit

       {
         eventHelper.py --msg "$1" --severity ERROR
         exit $2
       }

       export HOME=/home/ec2-user

       OUT=$(/opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install 2>&1) || error_exit "Failed to run npm install.  $OUT" $?
       echo $OUT
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

Omk*_*hav 10

对于bcrypt在您的项目中使用库的任何人。

如果您尝试使用 Elastic Beanstalk 部署代码,您将收到此错误。

只需删除bcrypt并开始使用bycryptjs

这让我头疼了 2 周。

降级bcrypt到 3.0.0 也无济于事。


Luc*_*osa 6

我能够通过以下文件 --> 解决此问题.ebextensions/00_dir_permission.config。希望这对其他人有帮助

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/00_set_tmp_permissions.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      chown -R ec2-user /tmp
      chown -R $USER:$(id -gn $USER) /tmp/.config
      chown -R nodejs:nodejs /tmp/.npm
Run Code Online (Sandbox Code Playgroud)


小智 6

.npmrc我通过添加一个文件解决了这个问题

unsafe-perm=true
Run Code Online (Sandbox Code Playgroud)

但将其添加.npmrc到根应用程序文件夹并不是正确的方法。您必须在 EB 配置文件中指定它。查看/sf/answers/1749516541/


Kle*_*nig 5

在我的情况下,解决方案.ebextensions/00_dir_permission.config不起作用(仍然给了我错误),但unsafe-perm=true.npmrc文件中使用的解决方案确实如此。见/sf/answers/3220106221/

PS:运行 Node.js 版本:8.11.4 on 64bit Amazon Linux/4.5.4


小智 5

将名为 .npmrc 的文件添加到应用程序,其内容为:

unsafe-perm=true
Run Code Online (Sandbox Code Playgroud)

现在,在将其推送到 ElasticBeanStalk 之前使用以下命令:

git add .npmrc
git commit -m"EB issue fix"
Run Code Online (Sandbox Code Playgroud)

现在部署您的代码。它应该有效。