You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

子目录结构下Azure Functions(TypeScript)应用部署异常排查

解决Azure Functions + React/TypeScript项目的部署目录问题

问题核心

你的项目将编译后的函数代码输出到dist/functions目录,但func azure functionapp publish默认仅打包根目录下的functions源码文件夹,导致Azure无法识别到编译后的可执行JS文件,因此门户中看不到已发布的函数。


方案1:指定发布目录为编译后的dist/functions

Azure Functions Core Tools支持通过参数指定发布的目标目录,直接指向编译后的函数代码:

  • 执行发布命令时添加--src参数:
    func azure functionapp publish myappname --src dist/functions --build remote
    
    • --src dist/functions:告诉工具要发布的是编译后的函数目录
    • --build remote:让Azure端负责安装依赖,避免本地node_modules体积过大或环境不一致

注意:需要确保dist/functions下的每个函数子目录都包含function.json,可以在package.json的build脚本中添加复制命令(比如用copyfiles工具):

"scripts": {
  "build": "tsc && copyfiles functions/**/*.json dist/functions"
}

方案2:修复TS5055错误,让编译文件与源码同目录

如果想回到源码与编译文件同目录的方案,解决error TS5055的关键是在tsconfig.json中精准控制编译范围,避免TS尝试覆盖已有的纯JS和.d.ts文件:

{
  "compilerOptions": {
    "outDir": "./",
    // 保留你的其他编译配置
  },
  "include": [
    "functions/**/*.ts",
    "shared/**/*.ts",
    "browser/**/*.tsx"
  ],
  "exclude": [
    "browser/**/*.js",
    "browser/**/*.d.ts",
    "node_modules",
    "dist"
  ]
}

配置后TS只会处理指定的TS/TSX文件,不会覆盖已有JS类型定义文件,此时直接执行func azure functionapp publish myappname即可正常发布。


方案3:VS Code扩展部署配置(适用于VS Code用户)

在项目的.vscode/settings.json中添加部署路径配置,让VS Code的Azure扩展自动指向编译后的目录:

{
  "azureFunctions.deploySubpath": "dist/functions",
  "azureFunctions.postDeployTask": "none"
}

之后通过VS Code的Azure扩展点击发布按钮,工具会自动使用dist/functions作为发布目录。


内容的提问来源于stack exchange,提问作者Oliver Bock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 05:30:52