无法将新建Azure Function部署至Linux应用的问题求助
解决Linux环境Azure Function服务器端构建失败(tsc not found)的问题
错误根源分析
从部署日志的关键报错/tmp/zipdeploy/extracted/node_modules/.bin/tsc: ../typescript/bin/tsc: not found可以确定:服务器端执行npm run build时找不到TypeScript可执行文件,核心原因是依赖配置或构建环境的设置冲突。
解决方案
1. 确保TypeScript已添加为项目依赖
执行以下命令将TypeScript安装为项目开发依赖,确保package.json中包含该依赖项:
npm install typescript --save-dev
注意:服务器端构建时会重新安装所有依赖,因此本地无需保留
node_modules,但必须保证package.json中明确声明了typescript依赖。
2. 修正Azure Function应用的构建环境设置
你当前将ENABLE_ORYX_BUILD设为false,但Linux环境下需依赖ORYX工具完成服务器端构建,需将其改为true,配合已设置的SCM_DO_BUILD_DURING_DEPLOYMENT=true使用:
az functionapp config appsettings set --name <你的函数应用名称> --resource-group <资源组名称> --settings ENABLE_ORYX_BUILD=true
3. 调整package.json的build脚本
修改scripts中的build命令,指定tsc的完整相对路径,避免路径解析异常:
{ "scripts": { "build": "./node_modules/.bin/tsc", "start": "func start" } }
4. 优化部署配置(以GitHub Actions为例)
确保部署动作不指定预构建包,让服务器端自动触发构建:
- name: Deploy to Azure Functions uses: azure/functions-action@v1 with: app-name: '<你的函数应用名称>' publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }} scm-do-build-during-deployment: true
5. 清理服务器端缓存
通过Kudu控制台(https://<你的函数应用名>.scm.azurewebsites.net)进入Debug console > Bash,执行以下命令清理旧缓存:
rm -rf /home/site/wwwroot/* rm -rf /tmp/zipdeploy
完成以上步骤后重新部署,即可解决tsc找不到的问题,实现Linux环境下的服务器端构建。
内容的提问来源于stack exchange,提问作者rjjdv
相关产品推荐
相关产品推荐

