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
相关产品推荐
相关产品推荐

