在Node.js ES模块中加载JSON文件有没有更简便的实现方法?
Node.js ES模块加载JSON文件最简方案
纯JavaScript运行场景
方案1(Node.js v17.1.0及以上推荐,无额外依赖/参数)
直接使用ES模块导入断言,不需要任何实验参数、不需要手动创建require方法:
import creds from './credentials/sheets123456123456.json' assert { type: 'json' };
直接执行node index.js即可正常运行。
方案2(兼容低版本Node.js,无需实验参数)
用fs模块读取文件后手动解析JSON,适配所有支持ES模块的Node.js版本:
import fs from 'fs'; const creds = JSON.parse(fs.readFileSync('./credentials/sheets123456123456.json', 'utf8'));
异步场景可以换成fs/promises的readFile方法。
TypeScript开发场景
在上述JS方案的基础上,只需要在tsconfig.json的compilerOptions中添加2项配置即可解决所有TS报错:
{ "compilerOptions": { "module": "ESNext", // 支持import.meta语法,避免TS1343报错 "resolveJsonModule": true, // 支持识别JSON模块导入,避免找不到模块报错 // 其余原有配置保留即可 } }
不需要额外创建空文件、不需要修改tslint其他配置。
内容的提问来源于stack exchange,提问作者Oba Api
相关产品推荐
相关产品推荐

