You need to enable JavaScript to run this app. Node.js返回的JSON错误信息在Angular中无法读取errorMessage如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Node.js返回的JSON错误信息在Angular中无法读取errorMessage如何解决

问题原因

  1. Node.js 错误处理中间件存在逻辑错误:res.json()方法本身已经完成响应发送、自动结束响应流程,你后续额外调用res.send()属于重复发送响应,会破坏响应结构,导致响应的Content-Type头异常,Angular HttpClient 无法自动将响应体解析为JSON对象。
  2. 你打印的error.error实际是JSON字符串类型,而非解析完成的对象,直接读取对象属性自然返回undefined。

修复步骤

第一步:修复Node.js服务端代码

删除多余的res.send()调用,修正后的代码如下:

app.use((error, req, res, next) => {
    const body = {
        errorMessage: error.message || JSON.stringify(error)
    }
    const status = error.status || 500;
    res.status(status);
    res.header('Error', error.message);
    res.json(body);
})

第二步:适配Angular端取值逻辑

如果你的Angular HttpClient请求配置了responseType: 'text',或者修复服务端后还是存在取值问题,增加手动JSON解析逻辑即可:

(error: HttpErrorResponse) => {
    this.loadingSpinner.stopLoading();
    let errorMessage = '未知错误';
    // 先判断error.error的类型
    if (typeof error.error === 'string') {
        try {
            // 是JSON字符串就先解析
            const errObj = JSON.parse(error.error);
            errorMessage = errObj.errorMessage || error.error;
        } catch (parseErr) {
            // 解析失败直接用原始值
            errorMessage = error.error;
        }
    } else {
        // 已经是对象直接取值
        errorMessage = error.error?.errorMessage || error.message || '未知错误';
    }
    console.log(errorMessage);
}

内容的提问来源于stack exchange,提问作者Buzz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 06:15:01