Reputation: 20496
When trying to deploy a Node.js application I'm getting an error npm: command not found
in my post_install.sh
AfterInstall script. What's super strange is in my BeforeInstall script I run npm install -g pm2
and it works perfectly fine without any errors.
Both are being run as the ubuntu
user. Why would this command work in one CodeDeploy script and fail in another?
Upvotes: 8
Views: 6012
Reputation: 1
I got the same problem trying to invoke the aws cli in my shell script during the After Install hook, in an ubuntu20 server with ubuntu user.
I have checked inside /usr/bin/ folder on server yarn/pm2/node are running are not If not run below command root@ip-:/# ln -s /root/.nvm/versions/node/v16.17.0/bin/node /usr/bin/ root@ip-:/# ln -s /root/.nvm/versions/node/v16.17.0/bin/pm2 /usr/bin/ root@ip-:/# ln -s /root/.nvm/versions/node/v16.17.0/bin/yarn /usr/bin/
Upvotes: 0
Reputation: 1519
I got the same problem trying to invoke the aws cli in my shell script during the AfterInstall
hook, in an ubuntu server with ubuntu user.
This is what happened when I executed my script manually sh ecr-login.sh
:
# Works
$(aws ecr get-login --no-include-email --region sa-east-1)
# Works
$(/home/ubuntu/.local/bin/aws ecr get-login --no-include-email --region sa-east-1)
When CodeDeploy executed it:
# Not Work
$(aws ecr get-login --no-include-email --region sa-east-1)
# Works
$(/home/ubuntu/.local/bin/aws ecr get-login --no-include-email --region sa-east-1)
Upvotes: 0
Reputation: 20496
Looks like I was able to solve this by adding the following to my script files.
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Hopefully this can help someone.
Upvotes: 22