Node.js TypeScript函数应用部署至Linux消费计划异常问题咨询
针对TypeScript Node.js函数应用Linux消费计划zipdeploy的特殊配置说明
核心问题原因
Linux消费计划的默认zipdeploy流程不会自动触发TypeScript编译,而Premium计划或az functionapp deployment source config-zip命令会自动处理编译环节,这就是同一份代码在不同环境/部署方式下表现差异的核心原因。
解决方法
提前编译TypeScript并打包正确内容
本地执行npm run build(或直接运行tsc)将TypeScript源码编译为JavaScript,默认输出到dist目录。打包时需包含以下内容:dist目录(编译后的JS文件)package.json、package-lock.jsonhost.json、local.settings.json(含必要配置时)
不要仅打包.ts源码文件,否则Linux消费计划环境无法识别未编译的TypeScript代码。
开启部署时自动编译
在Azure函数应用的应用设置中添加配置项SCM_DO_BUILD_DURING_DEPLOYMENT=true。开启后,无论使用何种部署方式(包括curl的zipdeploy),Azure都会自动执行npm install安装依赖,并运行npm run build完成TypeScript编译,无需本地提前编译。确认curl请求的正确性
确保curl请求的Content-Type头正确,命令示例:curl -X POST -u <发布用户名>:<发布密码> --data-binary @<你的zip包路径> -H "Content-Type: application/zip" https://<函数应用名>.scm.azurewebsites.net/api/zipdeploy发布用户名和密码可从Azure门户的函数应用部署中心获取。
内容的提问来源于stack exchange,提问作者Andrew Miller
相关产品推荐
相关产品推荐

