Получение ошибки: аргумент "url" должен иметь тип string. Полученный тип не определен при попытке публикации на бот Slack, размещенный на Heroku - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь разработать и запустить бот Slack с помощью этого репо . Я не настраивал ничего, кроме развертывания на Heroku.

У меня все настроено, и я считаю, что все работает так, как должно быть, когда я go отправляю запрос в свое приложение, Я получаю следующую ошибку: TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received type undefined.

Вот полный журнал ошибок:

2020-01-24T20:44:59.024897+00:00 heroku[router]: at=info method=POST path="/incoming" host=bot-name.herokuapp.com request_id=e5367452-5894-434d-b7e7-15c024480cf0 fwd="34.223.105.71" dyno=web.1 connect=1ms service=35ms status=400 bytes=235 protocol=https
2020-01-24T20:51:31.327412+00:00 app[web.1]: TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received type undefined
2020-01-24T20:51:31.327426+00:00 app[web.1]:     at validateString (internal/validators.js:112:11)
2020-01-24T20:51:31.327428+00:00 app[web.1]:     at Url.parse (url.js:155:3)
2020-01-24T20:51:31.327431+00:00 app[web.1]:     at Object.urlParse [as parse] (url.js:150:13)
2020-01-24T20:51:31.327433+00:00 app[web.1]:     at dispatchHttpRequest (/app/node_modules/axios/lib/adapters/http.js:67:22)
2020-01-24T20:51:31.327436+00:00 app[web.1]:     at new Promise (<anonymous>)
2020-01-24T20:51:31.327438+00:00 app[web.1]:     at httpAdapter (/app/node_modules/axios/lib/adapters/http.js:20:10)
2020-01-24T20:51:31.327440+00:00 app[web.1]:     at dispatchRequest (/app/node_modules/axios/lib/core/dispatchRequest.js:59:10)
2020-01-24T20:51:31.327442+00:00 app[web.1]:     at processTicksAndRejections (internal/process/task_queues.js:94:5) {
2020-01-24T20:51:31.327444+00:00 app[web.1]:   code: 'ERR_INVALID_ARG_TYPE'
2020-01-24T20:51:31.327447+00:00 app[web.1]: }

Я не понимаю, что означает ошибка / что за программа хочет. Должен ли я передавать какой-то другой URL-адрес в полезной нагрузке?

Вот раздел приложения, который обрабатывает эту часть:

app.post('/incoming', (req, res) => {
  debug('an incoming ticket was received');
  Ticket.fromExternal(req.body)
    .then((ticket) => ticket.postToChannel())
    .then(() => {
      res.sendStatus(200);
    })
    .catch((error) => {
      console.log(error)
      debug(`an error occurred creating the ticket: ${error.message}`);
      res.status(400).send('The ticket was not created');
    });
});

Я рад предоставить больше информации, где это необходимо, но я потерян здесь и не уверен, что нужно для решения этого или, более вероятно, что я делаю неправильно. Как вы, вероятно, можете сказать, это все для меня в новинку.

Это ответ, который я получаю из своего сообщения HTTP:

{
    "response": {
        "status_code": 400,
        "headers": {
            "server": "Cowboy",
            "connection": "close",
            "x-powered-by": "Express",
            "content-type": "text/html; charset=utf-8",
            "content-length": "26",
            "etag": "W/\"1a-vV63UJ4QvBHXPkXtRjN8HhDrha0\"",
            "date": "Fri, 24 Jan 2020 21:07:50 GMT",
            "via": "1.1 vegur"
        },
        "body": "The ticket was not created"
    }
}

Я использую стороннюю платформу SAAS для отправки ПОЧТОВЫЙ запрос. Это Tray.io.

Вот полезная нагрузка, которую я отправляю. Не уверен, что если что-то мне не хватает. Информация о билете - это общее сообщение c, подробно изложенное в репо.

{
    "body": {
        "raw": "{\n  \"id\": \"1234\",\n  \"link\": \"https://somehelpdesk.localhost\",\n  \"title\": \"Test ticket\",\n  \"description\": \"Oh no! Something went wrong and now everything is on fire :fire:\",\n  \"requester\": \"Leia\",\n  \"status\": \"Open\",\n  \"agent\": \"Chewy\",\n  \"priority\": \"High\"\n}"
    },
    "queries": [],
    "headers": [
        {
            "key": "Content-Type",
            "value": "application/json"
        }
    ],
    "auth": {},
    "follow_redirect": false,
    "parse_response": "true",
    "url": "https://membership-slack-bot.herokuapp.com/incoming",
    "reject_unauthorized": true,
    "tls": {}
}
...