'AWS elastic beanstalk - WARN install EACCES: permission denied, access '/tmp/.npm'
Can anyone help me to get rid out of the following error -
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! [email protected] install: `node ./scripts/install.js || node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
I have tried following solutions - 1. created a file under .elasticbeanstalk dir with following codes -
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/
Upgraded instance type to t2.medium to avoid memory related exception
Following is my config.yaml file
and package.json file has following contents -
{
"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"
]
}
Thanks much!!
Solution 1:[1]
After trying everything, finally following solution worked for me :)
The solution is to add the file .npmrc to the application root directory with the content:
# Force npm to run node-gyp also as root, preventing permission denied errors in AWS with npm@5
unsafe-perm=true
Reference -
Beanstalk: Node.js deployment - node-gyp fails due to permission denied
Solution 2:[2]
I had a troublesome library that was causing this issue. Using the "unsafe-perm=true" did not resolve the problem.
Instead I changed the cache folder location per How can I change the cache path for npm (or completely disable the cache) on Windows? to npm_config_cache=/tmp
using the eb setenv
command. Libraries are installed properly now when doing a eb deploy
.
There may be some performance implications to doing this, but I've not noticed anything thus far.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Sachin Vairagi |
Solution 2 | Vik |