0

我有来自对新问题发表评论的文档中的 vanilla probot 事件函数:

const probotApp = app => {
  app.on("issues.opened", async context => {
    const params = context.issue({ body: "Hello World!" });
    return context.github.issues.createComment(params);
  });
}

这工作正常。

我将代码重构为一个单独的文件:

index.js

const { createComment } = require("./src/event/probot.event");

const probotApp = app => {
  app.on("issues.opened", createComment);
}

probot.event.js

module.exports.createComment = async context => {
  const params = context.issue({ body: "Hello World!" });
  return context.github.issues.createComment(params);
};

但我收到此错误:

ERROR (event): handler is not a function
    TypeError: handler is not a function
        at C:\Users\User\probot\node_modules\@octokit\webhooks\dist-node\index.js:103:14
        at processTicksAndRejections (internal/process/task_queues.js:97:5)
        at async Promise.all (index 0)

当我按照文档中的建议使用夹具创建测试并使用 nock 模拟事件 webhook 调用时,效果很好。但是当我在 GitHub 上创建一个真正的问题时,就会抛出这个错误。

如何在不导致错误的情况下将代码重构为单独的文件?

4

1 回答 1

3

这是我的错误。

这是整个probot.event.js文件:

module.exports.createComment = async context => {
  const params = context.issue({ body: "Hello World!" });
  return context.github.issues.createComment(params);
};


module.exports = app => {
  // some other event definitions
}

通过定义module.exports = app,我覆盖了之前的 module.export。因此,该createComment函数从未导出。

删除module.exports = app = { ... }修复它!

于 2020-09-22T09:09:42.977 回答