当前位置: 首页 > news >正文

Node.js JSON import attributes All In One

Node.js & JSON & import attributes All In One

你遇到的错误是因为 Node.js 对导入 JSON 的语法进行了调整:在较新的版本中,assert 关键字已被 with 关键字取代。这是由于 ECMAScript 标准的更新,将「导入断言」(import assertions)更名为「导入属性」(import attributes)。
解决方案:将 assert 替换为 with.

Node.js 18.17+ 或支持最新标准的环境中,正确的 JSON 导入语法应为:

// 导入 JSON 文件(使用新的 with 语法)
import carData from './data/car-prices.json' with { type: 'json' };

image

注意事项
Node.js 版本要求:
with 关键字语法需要 Node.js 18.17.0+ 或更高版本(LTS 版本推荐 20.x+)。
如果你使用的是较旧的 Node.js 版本(如 16.x 或 18.16 以下),可能不支持 with,此时建议使用 fs 模块读取(见下方兼容方案)。
ES 模块环境:
必须在 ES 模块环境中使用(package.json 中需设置 "type": "module"),否则会报错。
TypeScript 兼容:
若使用 TypeScript,需要将 tsconfig.json 中的 target 设置为 ES2022 或更高,并确保 moduleResolution 为 NodeNext 或 Node16。

errors

使用 import assertions 时候,遇到以下错误

The assert keyword in import attributes is deprecated and it has been replaced by the with keyword. You can enable the deprecatedImportAssert parser plugin to suppress this error. (18:38)


// 旧语法(已废弃)❌
// import carData from './car-data.json' assert { type: 'json' };

demos

import { readFile } from 'fs/promises';
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';// 获取当前文件的目录路径(ES模块中没有 __dirname,需手动获取)
const __dirname = dirname(fileURLToPath(import.meta.url));
const jsonPath = join(__dirname, './data/car-prices.json');// 读取并解析 JSON
const loadCarData = async () => {try {const data = await readFile(jsonPath, 'utf8');return JSON.parse(data);} catch (err) {console.error('读取JSON失败:', err);throw err; // 抛出错误供上层处理}
};// 使用数据
const carData = await loadCarData();
console.log('2025年1月的Model Y价格:', carData["2025_01_13"]["Model Y"][0].price);

(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!

refs

https://www.cnblogs.com/xgqfrms/p/17260205.html



©xgqfrms 2012-2021

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


http://www.gsyq.cn/news/28768.html

相关文章:

  • DeepSeek的“认知提纯”能力解析
  • Plya 定理学习笔记 | ABC428G 题解
  • 告别繁琐排版!揭秘2025年公众号推文排版top1神器
  • leetcode1. 两数之和、15. 三数之和、18. 四数之和
  • vue3+elementPlus el-date-picker 自定义禁用状态hook 建立结束时间不能小于开始时间
  • 【做题记录】贪心--提高组
  • 【为美好CTF献上祝福】 New Star 2025 逆向笔记
  • XXL-JOB(5)
  • Ramanujan Master Theorem
  • 【周记】2025.10.13~2025.10.19
  • C++案例 自定义数组
  • 20251023周四日记
  • ord() 函数
  • Redis中的分布式锁之SETNX底层实现
  • 2025家纺摄影公司推荐,南通鼎尚摄影专注产品视觉呈现
  • 求函数
  • Python---简易编程解决工作问题
  • MPK(Mirage Persistent Kernel)源码笔记(1)--- 基础原理
  • 背包dp(1)
  • 比赛题解 总结
  • 1019:浮点数向零舍入(分正负取整)
  • 创建 SQL Server 数据库【通用】
  • HNSW算法实战:用分层图索引替换k-NN暴力搜索
  • Spring Boot 自动配置之 TaskExecutor - 实践
  • 二分图/忆re.
  • 《IDEA 2025长效采用配置指南:有效期配置至2099年实战之JetBrains全家桶有效》​
  • 如何制作PDF文件目录? - 详解
  • todesk远程到被控Mac后能看到画面,鼠标键盘执行无反应
  • JAVA 排序用法
  • esp32-usb-jtag 调试踩坑