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

升级Node17后导入JSON文件报ERR_IMPORT_ASSERTION_TYPE_MISSING错误如何解决

修复方案

报错原因

Node.js 17 及更高版本对 ES 模块下的 JSON 导入规则做了对齐ECMAScript规范的调整,仅使用--experimental-json-modules启动标志已经无法满足导入要求,必须搭配导入断言明确声明导入的文件类型,才会触发该报错。

可用修复方式

  • 方案1:修改导入语句添加导入断言(最推荐)
    直接修改api.ts中的JSON导入代码,添加assert声明即可:
import countryTable from './data/countries.json' assert { type: 'json' };

如果后续将Node版本升级到18及以上,启动命令里的--experimental-json-modules参数可以直接删除,JSON导入在Node 18+已经成为稳定特性,不需要额外实验标志支持。

  • 方案2:通过文件读取+JSON解析实现导入(无需调整导入规则)
    如果你不想改动ES模块导入相关的代码逻辑,可以改用读取文件后手动解析的方式加载JSON内容:
import fs from 'fs';
const countryTable = JSON.parse(fs.readFileSync(new URL('./data/countries.json', import.meta.url), 'utf-8'));

使用import.meta.url拼接路径是为了避免ES模块环境下__dirname全局变量不可用导致的路径匹配错误。

  • 方案3:补充TypeScript配置(仅TypeScript项目需要)
    确保你的tsconfig.json中存在以下配置,避免编译阶段出现语法报错:
{
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "resolveJsonModule": true
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:04