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

Node.js TypeScript Azure函数无法使用绝对路径导入模块

Node.js TypeScript Azure函数绝对路径导入问题解决方案

核心原因

TypeScript的paths配置仅用于IDE语法提示和编译时类型检查,Node.js运行时(包括func start调用的Node环境)无法识别这些自定义路径,导致模块找不到错误。

解决办法

方法1:用tsconfig-paths处理运行时路径映射

  • 安装依赖:
    npm install tsconfig-paths --save-dev
    
  • 修改local.settings.json,给Node.js worker添加路径注册参数:
    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "",
        "FUNCTIONS_WORKER_RUNTIME": "node"
      },
      "languageWorkers": {
        "node": {
          "arguments": "-r tsconfig-paths/register"
        }
      }
    }
    
  • 确保tsconfig.json的baseUrl和paths配置正确,且outDir指向编译后的目录:
    {
      "compilerOptions": {
        "baseUrl": "./sealworker",
        "paths": {
          "utils/*": ["utils/*"]
        },
        "outDir": "./dist",
        "target": "ES2020",
        "module": "commonjs",
        "esModuleInterop": true
      },
      "include": ["sealworker/**/*"]
    }
    

方法2:使用Node.js原生子路径导入(无需第三方包)

  • 在项目根目录的package.json中添加子路径映射:
    {
      "imports": {
        "#utils/*": "./sealworker/utils/*"
      }
    }
    
  • 修改代码中的导入语句:
    import { getMachineInfo } from '#utils/machineInfo'
    
  • 可选:在tsconfig.json中添加对应paths配置,保证IDE语法提示正常:
    {
      "compilerOptions": {
        "baseUrl": ".",
        "paths": {
          "#utils/*": ["sealworker/utils/*"]
        }
      }
    }
    

方法3:调整目录结构(最简方案)

将sealworker设为源码根目录,直接在tsconfig.json中把baseUrl设为.,然后用import { getMachineInfo } from './utils/machineInfo'相对路径导入,但如果项目结构复杂,前两种方案更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:30:09