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

Azure Functions V3升级V4:同目录JS/TS文件处理及main配置

Azure Functions V3 升级至 V4(JS/TS文件共存场景)

一、升级步骤

针对你提供的V3目录结构(同时包含TS和原生JS函数),升级到V4的具体步骤如下:

  • 更新Azure Functions Core Tools
    卸载本地V3版本,安装最新的V4版本(需搭配Node.js 16+ LTS版本使用)。可通过npm全局安装:

    npm install -g azure-functions-core-tools@4 --unsafe-perm true
    
  • 升级项目依赖
    修改package.json中的@azure/functions依赖至V4版本,同步更新typescript、@types/node等相关依赖,示例:

    "dependencies": {
      "@azure/functions": "^4.0.0"
    },
    "devDependencies": {
      "typescript": "^5.0.0",
      "@types/node": "^18.0.0"
    }
    

    执行npm install完成依赖更新。

  • 调整tsconfig.json配置
    确保编译输出目录指向dist,并适配Node.js版本:

    {
      "compilerOptions": {
        "target": "ES2020",
        "module": "commonjs",
        "outDir": "./dist",
        "rootDir": "./",
        "strict": true,
        "esModuleInterop": true
      },
      "include": ["**/*.ts"],
      "exclude": ["node_modules", "dist"]
    }
    
  • 更新.funcignore文件
    添加规则忽略原TS源文件(避免被误加载),保留function.json和原生JS文件:

    *.ts
    node_modules/
    dist/
    .vscode/
    
  • 调整host.json配置
    确保扩展包使用V4版本:

    {
      "version": "2.0",
      "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
      }
    }
    

二、package.json的main字段配置

由于项目同时存在dist目录下的编译JS和根目录的原生JS,无法通过单一main路径覆盖所有函数,更可靠的方式是:

  1. 无需依赖main字段的全局匹配,给每个函数的function.json单独指定scriptFile路径:
    • 对于TS编译后的函数(如myFirstFunction、mySecondFunction),修改function.json:
      {
        "scriptFile": "../dist/myFirstFunction/index.js",
        "entryPoint": "handler",
        // 其他触发器配置
      }
      
    • 对于原生JS函数(如myThirdFunction),保持原配置即可:
      {
        "scriptFile": "./index.js",
        "entryPoint": "handler",
        // 其他触发器配置
      }
      
  2. 如果一定要设置main字段,可设为兜底路径(比如dist/**/*.js),但实际加载逻辑仍以每个函数的scriptFile配置为准。

三、运行混合目录的函数

完成上述配置后,按以下步骤启动函数:

  1. 编译TS文件:执行tsc或自定义build脚本(如npm run build,需在package.json中配置"build": "tsc")
  2. 启动Functions宿主:执行func start
    此时宿主会根据每个function.json中指定的scriptFile路径,分别加载dist目录下的编译JS文件和根目录下的原生JS文件,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:05:17