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

使用express-rate-limit触发限流时出现JSON解析错误的解决问询

问题解决方法

问题核心原因:触发限流规则时,express-rate-limit返回纯文本格式的错误信息,但你的客户端代码尝试将响应解析为JSON,导致解析失败抛出语法错误。

修改服务端配置(推荐方案)

将message参数从字符串改为JSON对象,express-rate-limit会自动把响应的Content-Type设为application/json,客户端就能正常解析:

const addLikeLimiter = rateLimit({
    windowMs: 1000, // 1秒
    max: 1, // 每秒限制1次点赞
    message: { 
        error: 'You can like once per second.' 
    },
    standardHeaders: true, // 在响应头返回限流信息
    legacyHeaders: false, // 禁用旧版限流响应头
})

app.use('/api/like', addLikeLimiter)

备选:修改客户端处理逻辑

如果无法调整服务端配置,可在客户端处理429响应时,先判断响应类型,纯文本直接读取内容,不做JSON解析。示例(基于fetch):

fetch('/api/like', { method: 'POST' })
  .then(async res => {
    if (res.status === 429) {
      const errorText = await res.text();
      // 处理纯文本错误信息,比如提示用户
      alert(errorText);
      return;
    }
    // 正常场景解析JSON
    const data = await res.json();
    // 后续业务逻辑
  })
  .catch(err => console.error(err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:01:00