Angular入门教程项目:JSON Server数据无法加载求助
排查JSON Server数据无法加载的常见原因
确认JSON Server是否正常运行
打开终端执行json-server --watch db.json后,需确保终端输出包含Resources http://localhost:3000/locations,且无报错信息。若服务未启动或启动失败,数据必然无法加载。检查db.json文件的合法性
确保项目根目录存在db.json,且文件内包含格式正确的locations数组,示例如下:{ "locations": [ { "id": 1, "name": "测试房源", "city": "上海", "photo": "assets/house.jpg" } ] }若文件缺失、
locations字段名拼写错误或JSON格式有误,请求会返回空数据或报错。直接验证请求地址有效性
在浏览器地址栏输入http://localhost:3000/locations,若能正常显示JSON数据,说明服务端配置无问题;若返回404/500等错误,需检查JSON Server启动参数或数据文件。处理跨域访问问题
尽管JSON Server默认支持CORS,但Angular项目(默认端口4200)与JSON Server(端口3000)跨域时仍可能出现拦截。可尝试两种解决方式:- 给fetch请求添加CORS模式配置:
const data = await fetch(this.url, { mode: 'cors' }); - 配置Angular代理:新建
proxy.conf.json文件:
启动Angular时使用{ "/locations/*": { "target": "http://localhost:3000", "secure": false, "logLevel": "debug" } }ng serve --proxy-config proxy.conf.json,同时将HousingService中的url修改为/locations。
- 给fetch请求添加CORS模式配置:
添加请求错误捕获逻辑
你的代码未处理请求失败场景(如网络错误、服务端异常),建议新增try-catch块定位问题:async getAllHousingLocations(): Promise<HousingLocation[]> { try { const data = await fetch(this.url); if (!data.ok) { throw new Error(`请求失败: ${data.status} ${data.statusText}`); } return await data.json() ?? []; } catch (error) { console.error('加载房源数据失败:', error); return []; } }打开浏览器控制台(F12)查看报错信息,可快速定位问题根源。
确认Angular项目运行状态
确保ng serve命令无报错输出,页面控制台无其他脚本错误干扰数据加载流程。
内容的提问来源于stack exchange,提问作者recovery
相关产品推荐
相关产品推荐

