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 文件夹。
我正在从 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 文件夹。