Развертывание приложения NodeJS — NPM/Gulp

Я пытаюсь развернуть приложение nodeJS на AWS CodeDeploy, и у меня возникла проблема с зависимостями gulp и запуском установки/запуска npm из файла bash.

У меня стандартная структура папок приложения с package.json в корне проекта и т. д.

Bash-файл (bin/npm_install.sh)

cd /opt/deployments/app-backend
npm install

Определения скриптов NPM

"scripts": {
  "postinstall": "gulp minify-sdk && gulp setup-auto",
  "start": "gulp",
  "test": "gulp test"
}

Ошибка при запуске bin/npm_install.sh

[stdout]
[stdout]> [email protected] start /opt/deployments/app-backend
[stdout]> gulp
[stdout]
[stderr]
[stderr]module.js:340
[stderr]    throw err;
[stderr]          ^
[stderr]Error: Cannot find module 'pretty-hrtime'
[stderr]    at Function.Module._resolveFilename (module.js:338:15)
[stderr]    at Function.Module._load (module.js:280:25)
[stderr]    at Module.require (module.js:364:17)
[stderr]    at require (module.js:380:17)
[stderr]    at Object.<anonymous> (/opt/deployments/app-backend/node_modules/.bin/gulp:5:18)
[stderr]    at Module._compile (module.js:456:26)
[stderr]    at Object.Module._extensions..js (module.js:474:10)
[stderr]    at Module.load (module.js:356:32)
[stderr]    at Function.Module._load (module.js:312:12)
[stderr]    at Function.Module.runMain (module.js:497:10)
[stderr]npm ERR! weird error 8
[stderr]npm WARN This failure might be due to the use of legacy binary "node"
[stderr]npm WARN For further explanations, please read
[stderr]/usr/share/doc/nodejs/README.Debian
[stderr] 
[stderr]npm ERR! not ok code 0

ПРИМЕЧАНИЕ. Запуск npm install отлично работает из корневой папки проекта.

Какие-либо предложения? Это лучший способ запустить приложение после того, как codedeploy завершит развертывание кода?


person Seonixx    schedule 06.05.2016    source источник


Ответы (2)


Вы можете использовать событие жизненного цикла AfterInstall для установки модулей и использовать событие жизненного цикла ApplicationStart для запуска приложения. Удачно ли запустить npm_install.sh вручную?

person Surya Bala    schedule 26.05.2016
comment
Смотрите мой ответ для объяснения того, что произошло. - person Seonixx; 26.05.2016

Хотя я не нашел объяснения этому, проблема заключалась в том, что когда папка node_modules возвращалась из TravisCI/CodeShip, файлы node_modules/.bin/* не имели символических ссылок, поэтому эти модули не могли разрешить свои внутренние зависимости.

В итоге я решил эту проблему, запустив npm install gulp в хуке after_install, который воссоздал символические ссылки.

person Seonixx    schedule 26.05.2016