AWS弹性beantalk-警告安装EACCES:权限被拒绝,访问'/tmp/.npm'

时间:2019-07-02 06:16:15

标签: reactjs amazon-web-services amazon-elastic-beanstalk

谁能帮助我摆脱以下错误-

WARN install EACCES: permission denied, access '/tmp/.npm'
  gyp ERR! clean error 
  gyp ERR! stack Error: EACCES: permission denied, rmdir 'build/bindings'
  gyp ERR! System Linux 4.14.123-86.109.amzn1.x86_64
  gyp ERR! command "/opt/elasticbeanstalk/node-install/node-v10.16.0-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v10.16.0-linux-x64/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
  gyp ERR! cwd /tmp/deployment/application/node_modules/iltorb
  gyp ERR! node -v v10.16.0
  gyp ERR! node-gyp -v v3.8.0
  gyp ERR! not ok 
  npm ERR! code ELIFECYCLE
  npm ERR! errno 1
  npm ERR! iltorb@2.4.3 install: `node ./scripts/install.js || node-gyp rebuild`
  npm ERR! Exit status 1
  npm ERR! 
  npm ERR! Failed at the iltorb@2.4.3 install script.
  npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

我尝试了以下解决方案-  1.在 .elasticbeanstalk 目录下使用以下代码创建文件-

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_fix_node_permissions.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      chown -R nodejs:nodejs /tmp/.npm/
  1. 将实例类型升级到t2.medium,以避免与内存相关的异常

    以下是我的 config.yaml 文件

    enter image description here

package.json 文件具有以下内容-

{
  "name": "shards-dashboard-lite-react",
  "version": "1.0.0",
  "private": true,
  "homepage": "./",
  "dependencies": {
    "camelize": "^1.0.0",
    "chart.js": "^2.7.3",
    "classnames": "^2.2.6",
    "cross-env": "^5.2.0",
    "dateformat": "^3.0.3",
    "flux": "^3.1.3",
    "lodash.find": "^4.6.0",
    "react": "^16.6.3",
    "react-dom": "^16.6.3",
    "react-ga": "^2.5.6",
    "react-quill": "^1.3.3",
    "react-router-dom": "^4.3.1",
    "react-scripts": "2.1.1",
    "shards-react": "^1.0.0",
    "shortid": "^2.2.14"
  },
  "scripts": {
    "start": "set PORT=8081 && react-scripts start",
    "build:prod": "npm run build",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

非常感谢!

1 个答案:

答案 0 :(得分:0)

尝试了一切之后,终于可以采用以下解决方案了:)

解决方案是将文件 .npmrc 添加到具有以下内容的应用程序根目录中:

# Force npm to run node-gyp also as root, preventing permission denied errors in AWS with npm@5
unsafe-perm=true

参考-

Beanstalk: Node.js deployment - node-gyp fails due to permission denied