Amazon Elastic Beanstalk npm can not find package.json
Я очень новичок в веб-сервисах amazon, и я пытаюсь настроить приложение node.js на их эластичный beanstalk. Я установил экземпляр и загрузил/развернул сайт, но пока здоровье "Ок", журналы node.js показывают это повторение примерно 30 раз:
npm ERR! enoent ENOENT: no such file or directory, open '/var/app/current/package.json'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! Please include the following file with any support request:
npm ERR! /var/app/current/npm-debug.log
npm ERR! Linux 4.1.13-19.31.amzn1.x86_64
npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v4.2.3-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v4.2.3-linux-x64/bin/npm" "start"
npm ERR! node v4.2.3
npm ERR! npm v2.14.7
npm ERR! path /var/app/current/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
Проблема в том, что мой package.json существует, потому что я сгенерировал его с npm init. Любые идеи о том, почему это невозможно найти? Вот пакет.json
{
"name": "testwebsite",
"version": "0.0.1",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"body-parser": "^1.13.3",
"express": "^4.13.3",
"express-session": "~1.0.0",
"socket.io": "^1.3.7"
},
"description": "my website",
"author": "Matt",
"engines": {
"node": ">=0.10.0"
},
"main": "server.js",
"devDependencies": {},
"license": "ISC"
}
Ответы
Ответ 1
Из официального потока AWS [1] появляется (и это была моя проблема), что вы могли бы запереть каталог верхнего уровня, а не застегивать сам источник.
Например, у вас могут быть все ваши файлы в папке "Проект". Вместо того, чтобы застегивать "Проект", вы должны заархивировать и загрузить содержимое "Проекта".
[1] Привет, Гость
Ответ 2
У меня была проблема такая же, как или очень похоже на это, и было вызвано тем фактом, что мой код прослушивал пользовательский порт, а не тот, который Elastic Beanstalk устанавливает как переменную среды (8081
).
Я установил этот параметр в порт рядом с моим app.js
или server.js
сразу после создания экспресс-приложения. Например:
var app = express();
app.set('port', (process.env.PORT || 5000)); // 5000 was my original port
Затем, используя этот порт в методе app.listen
вместо моего собственного номера порта:
app.listen(app.get('port'), function () {
console.log('Server has started! http://localhost:' + app.get('port') + '/');
});
Подробнее здесь: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#nodejs-platform-proxy
Ответ 3
У меня была и эта нечетная ошибка на AWS EB. Обычно я развертывал с использованием CLI.
пару вещей, чтобы попробовать.
-
убедитесь, что package.json не находится в вашем файле.gitignore, чтобы убедиться, что он привязан к вашему репозиторию. EB использует историю git commit, чтобы решить, что делать с почтой и отправлять. Если это не включено, это не на серверах AWS
-
Я использовал вариант экземпляра t2.nano(512 МБ пространства) для EC, и это, казалось, было проблемой, потому что у меня было много модулей в моем пакете. json. Не был уверен, что это была основная проблема моих проблем, но мои сообщения об ошибках изменились, когда я обновился до экземпляра, который имел не менее 1 ГБ пространства.
надеюсь это поможет