TSX导入JSON报错:已配置resolveJsonModule仍找不到模块
TSX 文件导入本地 JSON 模块报错排查步骤
1. 修正导入语句的基础语法错误
你当前写的导入代码 import data './location' 不符合ES模块规范,缺少了必须的from关键字,完整的导入基础结构为:import [自定义导入变量名] from [真实模块路径]
2. 修正模块路径的指向问题
你写的./location是占位路径,没有实际定位到你的data.json文件,需要根据两个文件的实际相对位置调整路径:
- 如果
data.json和当前tsx文件在同一目录,路径替换为./data.json - 如果
data.json在当前tsx文件的上级目录,路径替换为../data.json - 注意路径大小写、斜杠方向要和实际文件系统完全匹配,避免因路径匹配失败触发模块找不到的报错
3. 补全tsconfig.json的配套配置检查
你已经开启的resolveJsonModule: true、esModuleInterop: true是导入JSON的必要配置,还需要确认以下配置项没有问题:
- 确认
include字段覆盖了存放tsx文件和data.json的目录:常见默认配置为"include": ["src"],如果你的JSON文件放在src目录外(比如项目根目录、public目录),就会因被TS编译流程排除而触发找不到模块的报错 - 确认
moduleResolution配置值为"node"或"bundler",旧的"classic"解析模式不支持JSON模块的路径查找逻辑 - 所有tsconfig.json的配置修改完成后,必须重启本地TS服务(例如VS Code环境下通过命令面板执行「TypeScript: Restart TS Server」),未重启的情况下旧的缓存配置会持续触发类型找不到的报错
正确的导入示例(同目录场景)
import data from './data.json'; // TS 会自动根据JSON内容推导结构类型,无需手动写类型声明 console.log(data[0].subpage); // 自动匹配到 "FirstA" 的提示
注意:用于导入的JSON文件必须放在TS编译的覆盖范围内,不要把需要import的JSON放在public静态资源目录,该目录的文件不会被TS模块解析流程识别。
内容的提问来源于stack exchange,提问作者goku
相关产品推荐
相关产品推荐

