Node.js - сервер Heroku падает при запуске этого кода - PullRequest
1 голос
/ 06 октября 2019

У меня есть приложение Node.js, которое отлично работает на моем локальном хосте.

Однако, когда я загружаю в Heroku, сервер падает после выполнения части кода.

предполагается, что данный код извлекает часть из строки URL, которая была передана из формы.

Этот код вызывает сбой сервера:

  function getUserDetails(username) {
    return new Promise(done => {
        var data = [];
        https.get(`https://www.instagram.com/${username}/?__a=1`, resp => {
            resp.on('data', chunk => data.push(chunk));
            resp.on('end', () => {
                var json = JSON.parse(data.join(''));
                done(json.graphql.user);
            });
        });
    });
} 

После сбоя Heroku - иЭто все еще происходит сбой последовательно, я проверил журналы с heroku logs --tail.

Это отчет из журналов:

2019-10-06T10:59:40.782839+00:00 app[web.1]: undefined:1
2019-10-06T10:59:40.782863+00:00 app[web.1]:
2019-10-06T10:59:40.782865+00:00 app[web.1]:
2019-10-06T10:59:40.782867+00:00 app[web.1]:
2019-10-06T10:59:40.782870+00:00 app[web.1]: SyntaxError: Unexpected end of JSON
 input
2019-10-06T10:59:40.782872+00:00 app[web.1]: at JSON.parse (<anonymous>)
2019-10-06T10:59:40.782874+00:00 app[web.1]: at IncomingMessage.resp.on (/app/ap
p/routes.js:108:33)
2019-10-06T10:59:40.782876+00:00 app[web.1]: at IncomingMessage.emit (events.js:
203:15)
2019-10-06T10:59:40.782878+00:00 app[web.1]: at endReadableNT (_stream_readable.
js:1145:12)
2019-10-06T10:59:40.782880+00:00 app[web.1]: at process._tickCallback (internal/
process/next_tick.js:63:19)
2019-10-06T10:59:40.869547+00:00 heroku[web.1]: State changed from up to crashed

2019-10-06T10:59:40.847583+00:00 heroku[web.1]: Process exited with status 1
2019-10-06T10:59:40.790256+00:00 heroku[router]: at=error code=H13 desc="Connect
ion closed without response" method=POST path="/MY_PATH" host=MY_HOST.herok
uapp.com request_id=15118004-c799-45bd-a0a9-909cbd3a5e86 fwd="130.43.125.250" dy
no=web.1 connect=1ms service=101ms status=503 bytes=0 protocol=https

1 Ответ

0 голосов
/ 06 октября 2019

Откуда вы получаете значение URL? Похоже, что вы читаете в каком-то другом месте из ввода JSON, и это неправильно отформатирован или отсутствует тег или около того.

При локальном запуске кода он работает как положено.

var URL = require('url').URL;

url = "stackoverflow.com/questions/58256767/node-js-heroku-server-crashes-when this-code-runs";

if(!/^https?:\/\//i.test(url)){
  url = "http://" + url;}
let parsed = new URL(url);
let retrieved = parsed.pathname.split('/')[1];

Вывод:

node v10.16.0

=> '/13071581/node-js-server-heroku-padaet-pri-zapuske-etogo-koda'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...