无法确定函数入口点

Unable to determine function entry point

几个月来一直在使用 MS botframework。在节点中使用模拟器进行开发,并使用持续集成推送到 Azure。

上周三推送,测试没有问题。做了两个非常无关紧要的代码更改并在周五推送,不,我得到:

执行函数时出现异常:Functions.messages。 mscorlib:无法确定函数入口点。我尝试重新部署旧版本,同样的事情。

想法?

1) 尝试停止 Azure 中的服务:

2) 然后去 Kudu: https://[YourAzureSiteName].scm.azurewebsites.net/DebugConsole

和运行 npm install:

3) 然后在Azure中重启服务

函数入口点根据this logic确定。可以看到,流程是:

  1. 如果在 function.json 中定义了显式入口点,请使用该入口点
  2. 否则;如果只有一个导出函数,使用那个
  3. 否则;尝试使用名为 runindex 的函数(按此顺序)

我怀疑您在分支 #2 中,并且您的小改动引入了新函数,因此运行时现在正在尝试查找名为 runindex 的函数,但该函数不存在.

您能否确保您的主要入口点函数被命名为 runindex 然后重试?

原来 Azure git 集成中存在一个短暂的错误,我在 window 期间部署了这个错误。它修改了 function.json 并使其处于无效状态。感谢 MS 支持坚持解决问题并确定根本原因。

您可以使用 module.exports 例如:

module.exports = async function queryDatabase() {

    const pg = require('pg');
    //...
    //...
}

就我而言,根本原因是有 1 个命名导出和 1 个默认导出。 要解决此问题,仅导出入口点文件中的默认 1 项(在我的例子中为 index.js) 离开这里作为线索,以防有人遇到同样的事情

如果您要导出多个函数 例如 function1,function2 然后 通过将此行添加到文件末尾,我们可以解决此问题。

exports.index = function1