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

如何在Azure Durable Functions(TypeScript)中记录错误堆栈跟踪?

解决Azure Durable Functions(TypeScript)异常无TypeScript堆栈跟踪问题

针对你遇到的Durable Functions(TypeScript)异常时无法获取TS堆栈跟踪的问题,可通过以下步骤解决:

  • 修正TypeScript编译配置
    确保tsconfig.json中启用内联源映射和内联源码,Azure Functions运行时需要内联的源信息才能关联TS代码与JS执行堆栈:

    {
      "compilerOptions": {
        "target": "ES2020",
        "module": "commonjs",
        "inlineSourceMap": true,
        "inlineSources": true,
        // 保留其他原有配置
      }
    }
    

    注意:默认的Azure Functions TypeScript模板不会自动开启这两个选项,必须手动添加。

  • 配置Node.js运行时启用源映射解析
    在本地开发的local.settings.json或生产环境的函数应用应用设置中添加以下配置:

    • NODE_OPTIONS = --enable-source-maps:让Node.js在抛出异常时自动解析内联源映射,生成TS格式的堆栈跟踪
    • 确保WEBSITE_NODE_DEFAULT_VERSION设置为18.x或20.x等较新版本,旧Node.js版本对源映射的支持不完善
  • 统一异常处理,避免重复try-catch
    无需在每个触发器/处理器外手动包裹try-catch,可创建一个通用的异常包装函数,统一处理日志记录并保留TS堆栈:

    export const withErrorLogging = <T extends (...args: any[]) => Promise<any>>(func: T) => {
      return async (...args: Parameters<T>) => {
        try {
          return await func(...args);
        } catch (error) {
          const context = args[0];
          // 用context.log.error记录,日志会自动传入Application Insights并携带TS堆栈
          context.log.error('Execution failed', error);
          // 重新抛出异常,保证Durable Functions的失败编排逻辑正常执行
          throw error;
        }
      };
    };
    

    使用时直接包裹你的编排/活动/触发器函数:

    export const myOrchestrator = withErrorLogging(function*(context: OrchestrationContext) {
      // 你的编排逻辑
    });
    
  • 调整Application Insights日志配置
    在host.json中确保日志级别足够详细,让错误日志完整输出:

    {
      "logging": {
        "applicationInsights": {
          "samplingSettings": {
            "isEnabled": true,
            "excludedTypes": "Request"
          }
        },
        "logLevel": {
          "Function": "Error",
          "default": "Error"
        }
      }
    }
    

    配置后,Application Insights中就能看到包含TypeScript文件路径和行号的堆栈跟踪,而非仅.NET框架的堆栈信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:47:26