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

如何命名JSON对象并写入.json文件?ERR_INVALID_ARG_TYPE报错如何解决

报错原因
  1. fs.writeFileSync的第二个入参要求必须是字符串、Buffer、TypedArray或DataView类型,你传入的myJSON是JavaScript对象,不符合类型要求,因此触发类型错误。
  2. 你混淆了JavaScript对象和JSON字符串的概念:你定义的var myJSON = {measurements: {}}本质是普通JS对象,不是JSON。JSON是符合特定格式的纯字符串,需要通过JSON.stringify()序列化JS对象得到。
  3. 你之前的代码只对myJSON内部的measurements属性做了序列化,整个myJSON变量仍然是JS对象类型,直接传入文件写入方法自然报错。

为什么用var myJSON = {}就不会报错?

你如果直接用空对象声明后,把整体序列化后的结果直接赋值给myJSON变量,此时myJSON就变成了字符串类型,符合writeFileSync的参数要求,因此不会报错。

正确实现逻辑

你找到的解决方案是对的,完整的操作逻辑如下:

  1. 先给JS对象的属性赋原始值,不要提前序列化单个属性:
// 不要提前序列化measurements
myJSON.measurements = measurements;
  1. 写入文件前,将整个JS对象序列化为JSON字符串:
// 第二个和第三个参数是可选的,作用是格式化JSON输出,提升可读性
fs.writeFileSync('./chart.json', JSON.stringify(myJSON, null, 2));

如果提前序列化measurements属性,最终写入的文件里measurements会是一个带转义符的字符串,而不是你需要的嵌套对象结构,不符合你给出的预期数据结构要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 17:15:01