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

Near Protocol合约构建报TS6054错误 已配resolveJsonModule仍找不到JSON文件

问题根本原因

你当前使用的是Near Protocol的AssemblyScript(AS)合约开发栈,并非标准TypeScript运行环境,常规TypeScript配置项resolveJsonModule仅对标准TS编译器生效,对AS的编译流程无效。AS默认不支持直接导入JSON格式文件,编译时会自动为引入路径追加.ts后缀查找文件,因此触发了xxx.json.ts不存在的TS6054错误。

可行解决办法

  • 方案1:JSON转TS常量文件(优先推荐,无兼容问题)
    直接将你的sensor_data.json内容迁移到新建的sensor_data.ts文件中,以TS常量形式导出:

    // sensor_data.ts 内容
    export const data = {
      // 此处粘贴你原sensor_data.json的全部内容即可
    }
    

    之后将原导入语句替换为:

    import { data } from '../../contract/assembly/sensor_data';
    

    原有业务逻辑无需任何修改即可正常运行。

  • 方案2:保留JSON文件,添加AS的JSON导入支持
    安装AssemblyScript的JSON加载工具as-json-loader,然后修改项目根目录的asconfig.json(注意不是tsconfig.json,AS编译读取的是asconfig配置),在compilerOptions中添加编译参数--transform as-json-loader即可支持JSON文件直接导入。注意该方案需要匹配你当前使用的near-sdk-as版本,版本不兼容时会触发其他编译错误。

  • 方案3:排查路径匹配问题
    你代码中写的导入路径为../../contract/assembly/sensor_data.json,报错提示的查找路径为../contract/assembly/sensor_data.json.ts,二者路径层级不一致,可确认当前写导入语句的文件与JSON文件的相对路径是否正确,同时检查文件名、目录名的大小写是否完全匹配,AS的路径校验对大小写敏感。

额外注意

你的代码末尾有语法笔误:

// 原错误写法
export let DHT11Registry = new PersistentUnordered
Map<string, DHT11>("d");
// 需要合并为一行,避免后续编译报错
export let DHT11Registry = new PersistentUnorderedMap<string, DHT11>("d");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:03