ОШИБКА событие: не найдено; при запуске события из другого события: встроенное в nodejs приложение-пробот - PullRequest
0 голосов
/ 14 апреля 2020

Я создаю приложение GitHub в probot и nodejs и пытаюсь обновить PR каждый раз, когда происходит событие pull_request.synchronize . Я знаю, что в этом нет особого смысла, но суть в том, что я хочу иметь возможность обновлять PR при наступлении определенного события.

app.on('pull_request.synchronize', async context => {
    console.log('---------------------- on pull_request.synchronize, body of PR : ', context.payload.pull_request)
    console.log('State of PR after pull_request.synchronize event :---------------', context.payload.pull_request.state)
    await context.github.pulls.update({
      owner:context.payload.repository.owner,
      repo :context.payload.repository.name,
      pull_number :context.payload.pull_request.number,
      title:'updated Pull Request Title: Success',
      body:'updated Pull Request Body: Success',
    })

  })

Я получаю ошибку ниже каждый раз:

    ERROR event: Not Found (id=ssjsk-dd-sdfsdfs-fsfs-fsfsfsffsd)
  HttpError: Not Found
      at response.text.then.message (C:\GitWorkspace\user\GitHubApps\github-app-name\node_modules\@octokit\request\dist-node\index.js:66:23)
      at process._tickCallback (internal/process/next_tick.js:68:7)
  --
  event: {
    "event": "pull_request.synchronize",
    "id": "2332-3131-131-31231313-1313232144142",
    "installation": 3352243,
    "repository": "user/Demo-Repo"
  }
06:24:58.460Z ERROR probot: Not Found
  HttpError: Not Found
      at response.text.then.message (C:\GitWorkspace\user\GitHubApps\github-app-name\node_modules\@octokit\request\dist-node\index.js:66:23)
      at process._tickCallback (internal/process/next_tick.js:68:7)
06:24:58.472Z  INFO http: POST / 500 - 519.93 ms (id=3424234-43242-42423478a-4242-42342342)
06:24:58.476Z ERROR probot: Internal Server Error
  Error: Internal Server Error
      at Request.callback (C:\GitWorkspace\user\GitHubApps\github-app-name\node_modules\superagent\lib\node\index.js:706:15)
      at IncomingMessage.parser (C:\GitWorkspace\user\GitHubApps\github-app-name\node_modules\superagent\lib\node\index.js:916:18)
      at IncomingMessage.emit (events.js:203:15)
      at IncomingMessage.EventEmitter.emit (domain.js:448:20)
      at endReadableNT (_stream_readable.js:1129:12)
      at process._tickCallback (internal/process/next_tick.js:63:19)

Почему невозможно вывести детали из контекста, когда на самом деле контекст выводится моим оператором консоли и содержит данные pull_request.

Я всего лишь новичок в обоих probot и nodejs, поэтому я не уверен, имеет ли это какое-либо отношение к синтаксису.

1 Ответ

1 голос
/ 14 апреля 2020

Проблема в том, что context.payload.repository.owner является объектом, сравните пример полезной нагрузки на https://developer.github.com/v3/activity/events/types/#webhook -payload-example-28

Попробуйте заменить его на context.payload.repository.owner.login.

Probot также предоставляет удобный метод, который возвращает и { owner, repo } объект в зависимости от контекста, и вы можете передать ему дополнительные параметры

Попробуйте следующее

await context.github.pulls.update(context.repo({
  pull_number: context.payload.pull_request.number,
  title:'updated Pull Request Title: Success',
  body:'updated Pull Request Body: Success',
}))
...