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

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)跨域时仍可能出现拦截。可尝试两种解决方式:

    1. 给fetch请求添加CORS模式配置:
      const data = await fetch(this.url, { mode: 'cors' });
      
    2. 配置Angular代理:新建proxy.conf.json文件:
      {
        "/locations/*": {
          "target": "http://localhost:3000",
          "secure": false,
          "logLevel": "debug"
        }
      }
      
      启动Angular时使用ng serve --proxy-config proxy.conf.json,同时将HousingService中的url修改为/locations。
  • 添加请求错误捕获逻辑
    你的代码未处理请求失败场景(如网络错误、服务端异常),建议新增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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:02:13