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

Azure Functions(TypeScript)配置OpenTelemetry接入App Insights遇模块找不到错误

问题排查与解决方案

1. 检查导入路径正确性

  • 源码中index.ts导入telemetry.ts时,必须使用同目录相对路径,比如:
    import * as telemetry from './telemetry';
    
    避免使用src/telemetry这类绝对路径——编译后dist/src下的index.js和telemetry.js处于同一目录,运行时会按编译后的路径解析模块。

2. 修正TypeScript配置(tsconfig.json)

确保关键配置项符合v4模型要求:

  • rootDir设为源码根目录:"rootDir": "./src"
  • outDir设为编译输出目录:"outDir": "./dist"
  • moduleResolution匹配模块类型:
    • 若用ES模块(package.json中"type": "module"),设为"NodeNext"或"Node16"
    • 若用CommonJS,设为"Node"
  • include包含所有源码文件:"include": ["src/**/*"]

3. 统一模块类型配置

  • 若使用ES模块:
    1. 在package.json中添加"type": "module"
    2. tsconfig.json中"module"设为"ESNext"或"NodeNext"
  • 若使用CommonJS:
    1. 确保package.json中无"type": "module"(默认CommonJS)
    2. tsconfig.json中"module"设为"CommonJS"
    3. 导入时可改用require('./telemetry')(或保持import但确保路径正确)

4. 验证编译与运行流程

  • 每次修改代码后,必须执行npm run build编译TypeScript,确保dist/src下生成对应.js文件
  • 启动函数前,清理旧编译产物:rm -rf dist && npm run build
  • 用func start启动函数,而非直接运行.ts文件

5. 检查Azure Functions运行时配置

  • local.settings.json中FUNCTIONS_WORKER_RUNTIME必须为node
  • 确认NODE_VERSION与本地开发环境一致(推荐Node 18.x/20.x,对应Functions v4运行时)
  • host.json中extension bundle配置正确:
    "extensionBundle": {
      "id": "Microsoft.Azure.Functions.ExtensionBundle",
      "version": "[4.*, 5.0.0)"
    }
    

6. OpenTelemetry相关注意事项

  • 确保安装的OpenTelemetry包版本兼容当前Node版本,比如:
    npm install @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node
    
  • 遥测初始化代码需在函数逻辑前执行,确保telemetry.ts中的初始化逻辑在导入后立即运行

7. 清理缓存与依赖

  • 清理旧依赖和编译产物:
    rm -rf node_modules dist package-lock.json
    npm install
    npm run build
    
  • 重启func start,避免缓存导致的模块解析异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:52:38