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

TypeScript路径映射无法读取JSON文件的问题咨询

解决TypeScript路径映射加载JSON测试夹具的问题

首先明确:TypeScript的路径映射完全支持JSON这类非代码文件,你遇到的问题主要是require的运行时解析逻辑和TS编译时映射的配合问题,下面给你几个可行的解决办法:

方法1:改用ES模块import语法(推荐)

TS对ES模块的路径映射支持更直接,步骤如下:

  1. 打开tsconfig.json,确保开启这两个配置:
    {
      "compilerOptions": {
        "resolveJsonModule": true, // 允许导入JSON文件
        "esModuleInterop": true, // 兼容ES模块和CommonJS的交互
        // 你的其他配置...
        "paths": {
          "@fixtures/*": ["lib/fixtures/*"]
        }
      }
    }
    
  2. 用import替代require导入JSON:
    import widgetFixture from "@fixtures/widgets/widget.json";
    

方法2:让CommonJS的require识别TS路径映射

如果必须用require,需要让Node.js在运行时能解析TS的别名,用tsconfig-paths工具即可:

  1. 安装依赖:
    npm install tsconfig-paths --save-dev
    
  2. 运行测试文件时添加路径注册:
    ts-node -r tsconfig-paths/register your-test-file.ts
    
    或者在package.json的脚本里配置:
    {
      "scripts": {
        "test": "ts-node -r tsconfig-paths/register test/**/*.ts"
      }
    }
    

方法3:编译后替换路径别名(针对生产/编译后的代码)

如果是编译成JS后运行,Node.js依然不认识TS的别名,需要用tsc-alias把别名替换成实际路径:

  1. 安装依赖:
    npm install tsc-alias --save-dev
    
  2. 修改编译脚本:
    {
      "scripts": {
        "build": "tsc && tsc-alias"
      }
    }
    

额外检查点

  • 确认文件路径完全匹配:比如lib/fixtures/widgets/widget.json的大小写是否和你导入的一致(Linux/macOS区分大小写,Windows不区分)
  • 确保tsconfig.json在项目根目录,且你的测试文件被include配置覆盖到

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:47:34