Приложение Node.js с Heroku Scheduler, имеющее проблему с линией Шебанга - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь развернуть небольшое приложение Node.js в Heroku, а затем планировщик Heroku запускает приложение каждые 10 минут. Наши клиенты, бывшие поставщики, которые создавали это приложение, также размещали его на Heroku, поэтому не нужно ничего менять в исходном коде, который я получил. Тем не менее я получаю следующую ошибку из журнала Heroku.

2018-05-09T07:26:07.710882+00:00 app[api]: Starting process with command `fetch` by user scheduler@addons.heroku.com
2018-05-09T07:26:11.124833+00:00 heroku[scheduler.2653]: Starting process with command `fetch`
2018-05-09T07:26:11.718182+00:00 heroku[scheduler.2653]: State changed from starting to up
2018-05-09T07:26:13.647479+00:00 heroku[scheduler.2653]: State changed from up to complete
2018-05-09T07:26:13.629258+00:00 heroku[scheduler.2653]: Process exited with status 126
2018-05-09T07:26:13.542885+00:00 app[scheduler.2653]: bash: /app/bin/fetch: /usr/local/bin/node: bad interpreter: No such file or directory

Очевидно, есть проблема со строкой 'Shebang' в моем файле fetch, которая запускает мой файл index.js:

#!/usr/local/bin/node
var path = require('path');
require(path.join(__dirname, '../index')).start();

Я довольно новичок в Node.js и Javascript, поэтому я не уверен, что полностью понимаю назначение линии 'Shebang'. Но я предполагаю, что это указывает на неправильное местоположение или что-то в этом роде? Как выяснить, что изменить в этой строке?

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Строка Shebang сообщает, какой интерпретатор использовать для запуска файла. Полученная ошибка говорит о том, что узел не установлен в том месте, на которое указывает shebang. Использование #!/usr/bin/env node обычно работает.

0 голосов
/ 09 мая 2018

У вас не должно быть никакой строки "shebang" в вашем файле "fetch".Я предлагаю вам просто удалить строку #!/usr/local/bin/node и указать в качестве команды Heroku Scheduler следующее:

node <path_to_fetch.js>

Это должно заставить планировщик heroku запускать ваше приложение node.js в одноразовом dyno , при условии, что в вашем приложении есть node.js buildpack .

Используйте инструкции здесь , чтобы проверить, есть ли у вас build.packs node.js вваше приложение, и, если необходимо, добавьте его.

Тем не менее, если вы действительно хотите запустить свое приложение с "шебангом", измените его на #!/usr/bin/env node.В этом случае пропустите слово node в команде планировщика Heroku.

...