json-server可零代码快速搭建mock server:安装后通过db.json文件自动生成restful接口,支持get/post等操作;常见问题包括路径错误、json格式非法及vscode环境变量未加载,复杂需求需换express+lowdb实现动态逻辑与热更新。

Mock Server 用 json-server 最快上手
直接装 json-server 就能跑起来,不用写一行服务代码。它读一个 JSON 文件当数据库,自动暴露 RESTful 接口,适合前端联调或原型验证。
在项目根目录执行:
npm init -y && npm install json-server --save-dev然后建个
db.json,比如:
{
"users": [
{ "id": 1, "name": "Alice", "email": "alice@example.com" }
]
}
再加一条 script 到 package.json:"mock": "json-server --watch db.json --port 3001"。VSCode 里打开终端运行 npm run mock,服务就起来了。
常见错误现象:启动后访问 http://localhost:3001/users 返回 404 —— 多半是 db.json 文件名拼错、路径不在当前工作目录,或者 JSON 格式非法(注意末尾不能有多余逗号)。
VSCode 终端默认没激活 Node.js 环境怎么办
如果 npm 命令报 “command not found”,说明 VSCode 没继承系统 PATH 或 Node.js 未正确安装。别急着重装,先确认:
- 终端里手动执行
which node和which npm,看是否返回路径 - VSCode 是不是从桌面图标启动的?macOS 上推荐用
code .从 shell 启动,否则环境变量可能不全 - Windows 用户检查是否勾选了 “Add to PATH” 安装选项;没勾的话,手动把 Node.js 安装目录(如
C:\Program Files\nodejs\)加进系统环境变量
改完环境变量后,必须重启 VSCode 才生效 —— 这点容易被忽略。
需要动态响应或自定义路由?换 express + lowdb
json-server 不支持中间件或条件逻辑,比如根据 query 参数返回不同数据、模拟延迟、或 POST 后校验字段。这时候得自己搭轻量服务。
新建 mock.js:
const express = require('express');
const low = require('lowdb');
const FileSync = require('lowdb/adapters/FileSync');
const adapter = new FileSync('db.json');
const db = low(adapter);
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.get('/api/users', (req, res) => {
const { delay = 0 } = req.query;
setTimeout(() => res.json(db.get('users').value()), delay);
});
app.listen(3001, () => console.log('Mock server running on http://localhost:3001'));
依赖安装:
npm install express lowdb然后用
node mock.js 启动。关键点:lowdb 支持写操作,express 可插中间件,比如加个 CORS 头:app.use((_, res, next) => { res.header('Access-Control-Allow-Origin', '*'); next(); });
VSCode 调试 Mock Server 的坑:热更新别指望 nodemon 自动识别 db.json
nodemon mock.js 默认只监听 .js 文件,改 db.json 不会重启。必须显式加参数:
nodemon --watch mock.js --watch db.json mock.js或者写进
nodemon.json:
{
"watch": ["mock.js", "db.json"],
"ext": "js,json"
}
另一个坑:VSCode 的 debugger 默认 attach 到 node 进程,但 nodemon 启动的是子进程。要用 nodemon --inspect 并在 launch.json 里配 "attach" 模式,否则断点不生效。
复杂点在于,你得同时兼顾接口行为、数据一致性、调试便利性 —— 很少有人一开始就想清楚要不要支持 POST 写入、是否要持久化修改、要不要和真实后端 schema 对齐。这些决定往往拖到联调中途才浮现。











