NodeJS not installed successfully in AWS EC2 inside User-data

1

I've tried to install NodeJS in EC2instance - linux as follow inside user-data:

#!/bin/bash                                                  
yum update -y
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
export NVM_DIR="/home/ec2-user/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  
yum install git -y
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
git clone https://git-xxxx
cd xxxx
node app.js

When instance is running and check my ec2 instance, there is no node js and nvm installed when I typed node -v

[ec2-user@ip-xxxx ~]$ nvm -v
-bash: nvm: command not found
[ec2-user@ip-xxxx ~]$ node -v
-bash: node: command not found

What I missed ? I wrote this script as I usually do in my instance and work.

profile pictureAWS
Rowaida
posta 2 anni fa1555 visualizzazioni
2 Risposte
2

The user-data is ran as root -user so the NVM is now installed under root only. So when you run the curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash -script it gets installed under /root/.nvm/. Your code then assumes it's installed under /home/ec2-user/.nvm which is not true, so your nvm commands after that fail.

So you would need to either install the nvm and node system wide. Or just run commands as ec2-user in the script via "sudo -u ec2-user <command>" For example:

sudo -u ec2-user sh -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash'
sudo -u ec2-user sh -c '. ~/.nvm/nvm.sh && nvm install --lts'

Other option would be to wrap all the commands you want to run as ec2-user into shell script that you download from S3 or that you create the file inside user-data.

Also I don't see you running nvm install that would install Node on the machine.

profile pictureAWS
ESPERTO
Toni_S
con risposta 2 anni fa
0

try this command npm -v

profile picture
con risposta 2 anni fa

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande