Я пытаюсь запустить npm start в пользовательских данных облачной информации aws следующим образом:
nodejs = '\n', \
'echo "starting node server" > /tmp/nodejs.log\n', \
'npm run start-dev --prefix /data/app/myProject >> /tmp/nodejs.log &\n', \
'echo "After starting node server" >> /tmp/nodejs.log', \
'\n' ''
Это позже помещается в userdata вместе с другими командами.
Вот что я получаюв /tmp/nodejs.log после выполнения:
starting node server
After starting node server
Команда npm run не оставляет журналов и сервер не запускается.Если я выполню эту команду в терминале, то сервер будет работать успешно.
Почему не выполняется команда npm-start?
Отслеживание
Причина, по которой сервер не запускается, заключается в том, что команда npm не распознается в сценарии пользовательских данных.Однако я устанавливаю узел через nvm в сценарии поставщика упаковщика:
{
"type": "shell",
"script": "sh/install_node.sh",
"execute_command": "chmod +x {{ .Path }}; sudo bash -c '{{ .Vars }} {{ .Path }}'"
}
Вот файл install_node.sh:
#!/usr/bin/env bash
#install nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
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
#install node
nvm install 6.8.0
Так что теперь я пытаюсь выяснить, почему установка узлас помощью сценария поставщика упаковщика недостаточно для распознавания npm в сценарии пользовательских данных aws cloudformation.