Typescript 未在基于容器的 Azure Function App 中构建

Typescript not building in Container-based Azure Function App

我正在从 Azure 容器注册表中的容器部署到 Azure Function App。

我最初使用 func init 命令(选择 typescript 选项),并使用服务总线主题触发器模板添加了一些代码。当我在本地 运行 npm start 时,我可以让它工作。在 package.json 中有一个构建打字稿的 "prestart" 命令,它看起来像

"prestart": "npm run build && func extensions install",

构建创建了一个 dist 目录,所以当它启动时,我可以看到这个:

[8/14/19 8:45:43 PM] 1 functions loaded

一切都很好。当我将此功能部署到我的功能应用程序时,问题就开始了。我正在从 Azure 容器注册表进行部署。

通过Kudu,我可以看到容器错误日志:

2019-08-14T20:51:05.870505061Z       The following 1 functions are in error:
2019-08-14T20:51:05.870515162Z       ehmTopicTrigger: Invalid script file name configuration. The 'scriptFile' property is set to a file that does not exist.
2019-08-14T20:51:05.870540263Z       

当我在本地 运行 func start 而我的 dist 目录不存在时,我得到完全相同的错误。这让我相信,当 docker 容器在 Function App 中启动时,它不是 运行ning npm start (或者出于某种原因,它没有构建和创建 dist ).

我不认为提交和部署 dist 目录是答案,因为模板提供的 .gitignore 包括 /dist.

我做错了什么?

我将 npm 运行 build 添加到 docker 文件并且它现在可以工作了。

 FROM mcr.microsoft.com/azure-functions/node:2.0

 ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

 COPY . /home/site/wwwroot

 RUN cd /home/site/wwwroot && \
    npm install && \
    npm run build 

这会在容器内构建 dist 文件夹。