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

使用json-server启动mock服务遇“Cannot create property 'id' on string”错误求助

json-server启动失败:无法在字符串上创建'id'属性(字符串数组兼容方案)

问题场景

使用json-server搭建mock服务,db.json内容如下:

{
    "a": ["b"]
}

执行安装命令:

$ npm install -g json-server

启动命令:

$ json-server db.json --port 5500

启动时抛出如下错误:

file:///root/.nvm/versions/node/v16.20.2/lib/node_modules/json-server/lib/service.js:87
            item['id'] = randomId();
                       ^

TypeError: Cannot create property 'id' on string 'b'
    at file:///root/.nvm/versions/node/v16.20.2/lib/node_modules/json-server/lib/service.js:87:24
    at Array.forEach (<anonymous>)
    at fixItemsIds (file:///root/.nvm/versions/node/v16.20.2/lib/node_modules/json-server/lib/service.js:82:11)
    at file:///root/.nvm/versions/node/v16.20.2/lib/node_modules/json-server/lib/service.js:95:13
    at Array.forEach (<anonymous>)
    at fixAllItemsIds (file:///root/.nvm/versions/node/v16.20.2/lib/node_modules/json-server/lib/service.js:93:25)
    at new Service (file:///root/.nvm/versions/node/v16.20.2/lib/node_modules/json-server/lib/service.js:102:9)
    at createApp (file:///root/.nvm/versions/node/v16.20.2/lib/node_modules/json-server/lib/app.js:17:21)
    at file:///root/.nvm/versions/node/v16.20.2/lib/node_modules/json-server/lib/bin.js:116:13

仅将db.json改为{"a": "b"}时服务可正常启动,需要让json-server兼容字符串数组格式。

原因分析

json-server默认会为根级数组(作为mock资源的数组)中的每一项自动添加id属性,用于模拟RESTful接口的资源唯一标识。但字符串属于原始值类型,无法动态添加属性,因此触发类型错误。

解决方案

方案1:关闭自动生成id(快速兼容纯字符串数组)

启动服务时添加--no-id参数,禁用json-server自动为数组项添加id的行为:

$ json-server db.json --port 5500 --no-id

启动后请求/a接口,会直接返回原始的字符串数组["b"],满足基础的mock数据获取需求。

方案2:将字符串包装为对象(支持完整REST操作)

如果后续需要对数组项进行增、删、改、查等RESTful操作,建议把字符串包装成对象结构,修改db.json为:

{
    "a": [{"value": "b"}]
}

此时json-server会自动为每个对象生成id属性,启动后请求/a会返回:

[{"value": "b", "id": 1}]

这种方式可以充分利用json-server的RESTful功能,支持通过/a/1获取单条数据、POST请求新增数据等操作。

内容的提问来源于stack exchange,提问作者Evan D Losh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:52:29