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

Cypress中使用cy.writeFile追加JSON内容触发‘push is not a function’错误的问题咨询

解决Cypress中JSON对象追加属性的问题

我之前处理过类似的场景,咱们先搞清楚你遇到的问题根源,再给出解决方案:

为什么会报错list.push is not a function?

你参考的官方文档代码是针对JSON数组的操作,但你的list.json里的内容是一个JavaScript对象(结构是{ "details": {...} })。push()是数组专属的方法,对象并没有这个方法,所以调用它必然会抛出错误。

正确的对象属性追加代码

要给现有JSON对象添加新属性,直接给对象赋值即可,修改后的代码如下:

const filename = '/path/to/list.json'
cy.readFile(filename).then((obj) => {
  // 直接给对象添加新属性
  obj.item = 'example'
  // 将修改后的对象写回文件
  cy.writeFile(filename, obj)
})

执行这段代码后,你的list.json就会变成你期望的结果:

{ "details": { "name": "abc", "age": 20 }, "item": "example" }

扩展:如果需要添加多个同类项(数组形式)

要是之后你想添加多个item类型的内容,可以把item做成数组,先判断对象中是否存在该数组,不存在则初始化,再执行push操作:

const filename = '/path/to/list.json'
cy.readFile(filename).then((obj) => {
  // 初始化items数组(如果不存在的话)
  if (!obj.items) {
    obj.items = []
  }
  // 向数组中添加新项
  obj.items.push({ item: 'example' })
  cy.writeFile(filename, obj)
})

此时输出的JSON结构会是:

{ "details": { "name": "abc", "age": 20 }, "items": [{"item": "example"}] }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:17:37