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

NodeJS+TypeScript严格模式下ES6模块如何导入JSON文件

Node.js + TypeScript ES模块严格模式下导入JSON的解决方案

方法1:使用fs/promises读取解析JSON(最稳妥,无语法兼容问题)

这种方式完全规避了ES模块导入JSON的语法兼容问题,且严格模式下完全可用。

示例代码:

// script.ts
import { readFile } from 'fs/promises';

async function loadData() {
  const rawData = await readFile('./data.json', 'utf8');
  const data = JSON.parse(rawData);
  // 此处可使用data执行CRUD操作
  console.log(data);
}

loadData();

编译后运行无需额外实验性标志,严格模式下无报错。

方法2:配置TypeScript直接导入JSON(需对应Node.js版本支持)

通过调整tsconfig.json配置,让TypeScript允许直接导入JSON文件,同时适配Node.js运行环境:

  1. 修改tsconfig.json,添加如下配置:
{
  "compilerOptions": {
    "module": "ESNext",
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "strict": true // 保持严格模式开启
  },
  "include": ["**/*.ts", "**/*.json"]
}
  1. 在TypeScript文件中直接导入JSON:
// script.ts
import data from './data.json';

// 使用data执行操作
console.log(data);

注意:Node.js 17及以上版本支持直接导入JSON(无需实验性标志);若使用更低版本,运行时需添加--experimental-json-modules标志,例如:node --experimental-json-modules dist/script.js

方法3:手动创建类型声明文件配合导入

若不想修改tsconfig.json的resolveJsonModule配置,可手动定义JSON文件的类型声明:

  1. 在data.json同目录下创建data.json.d.ts文件:
declare module './data.json' {
  type Data = {
    // 按实际JSON结构定义类型
    id: number;
    name: string;
    // 其他字段...
  };
  const data: Data;
  export default data;
}
  1. 之后可结合方法1的fs/promises读取方式使用,或直接导入(TypeScript会自动识别类型)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:25:29