JSON Server无法访问ID键及GET请求异常问题求助
问题排查与解决步骤
1. 先确认db.json的结构是否合规
访问/articles/1返回404,首先得检查你的db.json里有没有id=1的文章条目,而且格式必须是标准的JSON数组结构:
{ "articles": [ { "id": 1, "title": "测试文章1" }, { "id": 2, "title": "测试文章2" } ] }
要是id不是数字、条目不存在,或者JSON有语法错误(比如多了逗号),都会直接返回404。
2. 修复Eta模板缺失的报错
终端抛的EtaError是因为全局安装的json-server缺了默认模板文件,大概率是安装时文件损坏或者权限问题,两种解决方式:
- 手动补全模板文件:
- 先创建缺失的路径:
mkdir -p /home/emilychew/.nvm/versions/node/v20.9.0/lib/node_modules/json-server/views/ - 在这个路径下新建
index.html,粘贴官方默认模板内容:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JSON Server</title> <link rel="stylesheet" href="https://unpkg.com/json-server@0.17.4/dist/server.css"> </head> <body> <main> <div class="container"> <h1>JSON Server</h1> <div id="resources"></div> <p class="footer"> <a href="https://github.com/typicode/json-server">JSON Server</a> </p> </div> </main> <script src="https://unpkg.com/json-server@0.17.4/dist/server.js"></script> </body> </html> - 先创建缺失的路径:
- 改用本地安装替代全局安装:
全局安装容易踩权限或文件缺失的坑,建议在项目目录里本地装:
然后在npm install json-server --save-devpackage.json里加个脚本:
运行时敲"scripts": { "json-server": "json-server --watch db.json" }npm run json-server就行,模板文件会存在项目的node_modules里,不会再缺。
3. 解决--watch命令跑不起来的问题
全局的--watch失效,大概率是nvm的PATH配置有问题或者权限不足:
- 先检查nvm的全局包路径在不在系统PATH里:
要是没输出,重新加载nvm:echo $PATH | grep "/home/emilychew/.nvm/versions/node/v20.9.0/bin"source ~/.nvm/nvm.sh - 直接用npx绕开全局安装的问题:
npx json-server --watch db.json
4. 排查请求无终端日志的问题
如果终端没记录请求,先确认请求真的到了json-server:
- 浏览器开开发者工具(F12),勾选“禁用缓存”后重新请求,避免旧缓存干扰
- 用curl直接发请求测试,看终端有没有日志:
要是curl请求有日志,就是浏览器的问题;要是还是没有,检查3000端口是不是被其他程序占了:curl http://localhost:3000/articles/1
确保只有json-server在监听这个端口。lsof -i :3000
内容的提问来源于stack exchange,提问作者Emily
相关产品推荐
相关产品推荐

