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

json-server监听多文件启动报firstRoute类型不支持错误如何解决

问题背景

参考Stack Overflow上题为“can't watch multiple files with json-server”的高赞方案编写多文件json-server配置,执行启动命令时出现类型报错,相关代码与报错信息如下。

原有代码

db.js

var firstRoute  = require('./jsonfile1.json');
var secondRoute = require('./jsonfile2.json');

module.exports = function() {
  return {
    firstRoute  : "/people",
    secondRoute : "/dates"
  }
}

server.js

var jsonServer  = require('json-server')
var server      = jsonServer.create()
var router      = jsonServer.router(require('./db.js')())
var middlewares = jsonServer.defaults()

server.use(middlewares)
server.use(router)
server.listen(3000, function () {
  console.log('JSON Server is running')
})

启动命令

node server.js

报错信息

Error: Type of "firstRoute" (string is not supported. Use objects or arrays of objects

问题原因

db.js的导出返回值完全写错了结构:

  • 你虽然在文件顶部引入了两个JSON文件的数据,但返回配置对象时,根本没有把引入的数据传入,反而把路由路径字符串作为值赋值给了自定义的firstRoute、secondRoute属性
  • json-server的router接收的数据源格式要求为:对象的键是路由访问路径,值是对应路由返回的对象/数组类型数据,传入字符串类型的值就会触发该类型报错
修正方法

仅需修改db.js的返回逻辑,将路由路径作为对象键,对应引入的JSON数据作为键值即可,server.js无需改动。修正后的db.js代码如下:

var peopleData  = require('./jsonfile1.json');
var datesData = require('./jsonfile2.json');

module.exports = function() {
  return {
    "/people": peopleData,
    "/dates": datesData
  }
}

修改完成后重新执行node server.js即可正常启动服务:

  • 访问http://localhost:3000/people可获取jsonfile1.json的内容
  • 访问http://localhost:3000/dates可获取jsonfile2.json的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:18:35