npm-start не работает в пользовательских данных облачной информации aws - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь запустить 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.

1 Ответ

0 голосов
/ 20 февраля 2019

Если кто-то наткнется на этот вопрос, решение состоит в том, чтобы просто добавить свой путь к узлу в переменную среды PATH в cloudFormation, например:

        nodejs = '\n', \
             'PATH=/root/.nvm/versions/node/v6.8.0/bin:$PATH\n', \
             'npm run start-dev --prefix path/to/project\n' \
             '\n' ''
...