1

Я пытаюсь установить простое приложение Node.js на Elastic Beanstalk с помощью инструментов командной строки.Устранение Node.js не работает на Amazon Elastic Beanstalk из-за разрешений каталога

На мой репозиторий я запускаю команду

$ eb deploy 

развернуть содержимое моего репозитория Git. Он развертывает отлично, однако состояние работоспособности приложения красное.

Если я смотрю на журналы на сайте Elastic Beanstalk, он указывает мне на следующее сообщение об ошибке в журналах:

> [email protected] install /tmp/deployment/application/node_modules/nodemon/node_modules/chokidar/node_modules/fsevents 
> node-pre-gyp install --fallback-to-build 

gyp ERR! configure error 
gyp ERR! stack Error: EACCES: permission denied, mkdir '/tmp/deployment/application/node_modules/nodemon/node_modules/chokidar/node_modules/fsevents/build' 
gyp ERR! stack at Error (native) 
gyp ERR! System Linux 4.1.17-22.30.amzn1.x86_64 
gyp ERR! command "/opt/elasticbeanstalk/node-install/node-v4.3.0-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v4.3.0-linux-x64/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--module=/tmp/deployment/application/node_modules/nodemon/node_modules/chokidar/node_modules/fsevents/lib/binding/Release/node-v46-linux-x64/fse.node" "--module_name=fse" "--module_path=/tmp/deployment/application/node_modules/nodemon/node_modules/chokidar/node_modules/fsevents/lib/binding/Release/node-v46-linux-x64" 
gyp ERR! cwd /tmp/deployment/application/node_modules/nodemon/node_modules/chokidar/node_modules/fsevents 
gyp ERR! node -v v4.3.0 
gyp ERR! node-gyp -v v3.0.3 
gyp ERR! not ok 

Я пробовал различные вещи, как:

  1. Создание каталога для себя (каталоги принадлежат root).
  2. Удаление всего из/tmp, чтобы, надеюсь, в следующий раз, когда он исправил себя.
  3. Удаление моего каталога node_modules.

Ни один из этих вариантов не работает, и я не могу найти обходной путь или причину, по которой это происходит. Я могу запустить приложение node.js локально, а также развернуть его в Azure и Heroku без каких-либо проблем.

+0

У меня есть эта же проблема, вы что-нибудь нашли? Предлагаемый ответ не был моей проблемой. – ParoX

+0

Я понял, модуль пытался установить другой модуль с помощью 'npm install' в разделе' preinstall' их package.json. Надеюсь, это и ваша проблема. – ParoX

+0

Я исправил свою проблему, не проверяя 'node_modules' в репозитории git. 'npm install' автоматически создает их. –

ответ

4

Проведенный целый день отладка этой ошибки. Оказывается, для вашего каталога .ebignore вам нужна обратная косая черта для каталогов.

.ebignore

node_modules/ 

Без слэша, папка местных node_modules будет загружено ее - в том числе зависимостей Дев.

+1

Предпочтительно добавлять 'node_modules' в ваш файл' .gitignore'. Это решает эту проблему. –

+0

Вы правы - это также решит проблему. У меня был '.gitignore', но для загрузки некоторых файлов сборки, которые также находятся в' .gitignore', требуется отдельный '.ebignore'. Документы утверждают, что '.ebignore' следует тому же синтаксису, что и' .gitignore', но это не совсем так. – jschr

2

У меня была аналогичная проблема, но я не использовал eb для развертывания и не включил node_modules/ в пакет. Решение, которое работало для меня, состояло в том, чтобы установить unsafe-perm=true в .npmrc - см. Beanstalk: Node.js deployment - node-gyp fails due to permission denied

Смежные вопросы